实验室第三周任务
一、PHP2
1.进入题目所给网址后,可得如下语句:Can you anthenticate to this website? 意为:你能认证到这个网站吗?
2.因为此题是关于php语言的,所以我们可以尝试在网址后加上index.phps来查看该网址的php源代码。输入后可得以下代码:
3.分析该代码:
第一行是php代码的开头标记,表示php代码的开始。
第二行检查通过url传递的“id”参数的值是否等于“admin”。如果它相等,则使用“echo”函数显示消息“not allowed!”并使用“exit”函数退出脚本。这是为了网址未经授权访问网站的管理员界面。
第六行使用“unldecode”函数解码“id”参数的url编码值。
第七行检查“id”参数的解码值是否等于“admin”。如果它相等,则使用“echo”函数显示消息“Access granted!”和一个“key”。
咱们的目标就是这串代码中的“key”了。
4.unldecode函数:
urldecode() 是一个 PHP 函数,用于解码 URL 编码字符串。在 URL 中,一些字符是有特殊含义的,例如空格、问号、等号等。如果需要在 URL 中使用这些字符,就需要对其进行编码,将其转换成特定的编码格式。例如空格会被编码成 %20。urldecode() 函数可以将这些编码格式的字符解码回原始字符,以便使用或显示。
在所给的php代码中,unldecode()函数用于解码传递的“id”参数的url编码值,以便后续判断“id”参数的值是否等于“admin”。因此我们要对“admin”进行url解码,得到:%61%64%6d%69%6e。又因为浏览器本身会进行一次url解码,所以我们其实需要进行两次url解码,即%61%64%6d%69%6e在进行一次url编码,得到%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65。
5.将所得的url解码输入到网址后面,即可得到所要求的key。
二、backup
PHP备份文件名
PHP 脚本文件的备份文件名,通常采用以下命名方式:
1.在原始文件名后添加日期时间戳。例如,如果要备份名为 index.php 的文件,则可以将其备份文件命名为index_20230521_004017.php。这里的20230521表示备份文件创建的日期,而004017表示备份文件创建的时间(小时、分钟和秒)。
2.使用bak或backup作为备份文件的后缀名。例如,可以将备份文件的文件名设置为 index_backup.php、index.bak 或 index_php_backup.php 等。这些名称可以更清晰地表明文件的类型,而不是日期和时间戳。
3.将备份文件保存到特定目录中,如 backups、backup 或 backup_files 中,并在备份文件名中包含日期和时间戳等信息,以便更容易识别和组织这些备份文件。
备份文件漏洞成因
1.访问控制不当:如果备份文件存储在 Web 服务器的目录下,并没有经过安全保护和访问控制,则其他人可以通过** URL 或者搜索引擎**的方式来直接访问到这些文件,导致备份文件被公开。
2.缺乏加密保护:如果备份文件没有进行加密处理,那么即便被存储在 Web 服务器的目录下,也有可能被未经授权的人员下载或者访问,从而造成数据泄露。
3.备份文件命名规范不当:如果备份文件没有按照规范的方式命名,或者文件名中包含了敏感信息,例如用户名、密码等,那么这些信息可能被未经授权的人员获取从而导致泄露。
备份文件名常用后缀
备份文件的后缀名应当反映出其所使用的压缩算法或格式,以便需要时能够轻松地识别和解压缩文件。一些常用的备份文件格式和后缀名包括:
rar:RAR 压缩算法格式,使用 WinRAR 或其他支持的工具进行解压缩。
zip:ZIP 压缩算法格式,使用 WinZip、7-Zip 等工具进行解压缩。
7z:7-Zip 压缩算法格式,使用 7-Zip 工具进行解压缩。
tar.gz 或 .tgz:tar (tape archive) 打包格式和 gzip 压缩算法结合使用的备份文件格式,可以使用 tar 和 gunzip 工具进行解压缩。
bak:一般用于表示原始文件的备份副本,不一定需要使用特定的压缩算法或格式。
swp:Vim 编辑器使用的临时交换文件格式,通常不用于表示备份文件。
txt:纯文本格式,通常不用于表示备份文件,但可以将备份文件的内容存储为文本文件进行备份。
sql:SQL 数据库脚本文件,用于备份数据库中的数据和结构等信息。
备份 index.php 文件,可以将其保存为 index_bak.zip、index_backup.tgz、index.rar 等格式的备份文件
1.通过题目可知此php备份的文件名是以“bak“为后缀的,所以在网址后输入/index.php.bak,后得到一个文件。
2.用记事本打开该文件即可得到本题的flag。
三、weak_auth
1.该网页让我们输入用户名和密码,我们随即输入后,弹出窗口让我们以”admin“作为用户名。我们再用admin作为用户名在输入一遍,弹出窗口说我们密码错误。
2. 接下来没有提示了,但是我们发现输入错误后他不会返回最开始的界面,而是没有后续了,所以我们不妨打开控制台看看元素。结果发现有一行绿色的字”maybe you need a dictionary“你需要一本字典。这下就明了了,是要让我们进行爆破。
3.接下来使用burp对该网页进行爆破:
4. 爆破后我们发现123456为密码,输入后便可得到本题答案。
四、simple_php
进入网页后得到以下内容,我们对这段php代码进行分析: