目录
第十四关:File upload - double extensions
第一关:HTML
靶机地址:http://challenge01.root-me.org/web-serveur/ch1/
解题思路:
查看网页源码即可。
第二关:HTTP - Open redirect
靶机地址:http://challenge01.root-me.org/web-serveur/ch52/
解题思路:
URL重定向漏洞:更改URL发现提示hash错误,原来h参数是校检url的md5哈希值的,那么计算url的哈希值进行替换即可。
第三关:Command injection
靶机地址:http://challenge01.root-me.org/web-serveur/ch54/
解题思路:
命令注入漏洞:通过管道符进行绕过:
&:表示任务在后台执行
&&:表示前一条命令执行成功时,才执行后一条命令
|:表示管道,上一条命令的输出,作为下一条命令参数
||:表示上一条命令执行失败后,才执行下一条命令
第四关:Weak password
靶机地址:http://challenge01.root-me.org/web-serveur/ch3/
解题思路:
这关考的是弱口令,admin/admin即可。
第五关:User-agent
靶机地址:http://challenge01.root-me.org/web-serveur/ch2/
解题思路:
访问提示你不是admin浏览器
置User-Agent字段为admin即可。
第六关:Backup file
靶机地址:http://challenge01.root-me.org/web-serveur/ch11/
解题思路:
这关考的是文件备份泄露,开始通过枚举.bak、.zip等等进行目录扫描没有发现任何文件,后来想到了应该是编辑器的自动备份,在linux中什么编辑器用得最多,当然是VI或VIM了,默认情况下使用Vim编程,在修改文件后系统会自动生成一个带~的备份文件。
那么访问:http://challenge01.root-me.org/web-serveur/ch11/index.php~即可下载index.php文件。
第七关:HTTP - POST
靶机地址:http://challenge01.root-me.org/web-serveur/ch56/
解题思路:
这关考的是修改POST数据,点击访问发现是个游戏,根据游戏规则要自己的分数超过999999才行,点击提交可看到自己的分数是本地生成的,修改分数超过它即可得到Flag。
第八关:HTTP directory indexing
靶机地址:http://challenge01.root-me.org/web-serveur/ch4/
解题思路:
这关考的是目录遍历漏洞,点击查看网页源码发现“admin/pass.html”文件,构造进行访问,发现能遍历admin目录。在admin/backup/admin.txt即可找到Flag。
第九关:HTTP Headers
靶机地址:http://challenge01.root-me.org/web-serveur/ch5/
解题思路:
点击访问得到:
通过HTTP响应头部得到此字段,把此字段加入请求头中即可。
第十关:HTTP verb tampering
靶机地址:http://challenge01.root-me.org/web-serveur/ch8/
解题思路:
此关考的是利用HTTP方法绕过认证页面,后端对GET方法进行了访问认证,但没有对其它方法进行限制。
第十一关:Install files
靶机地址:http://challenge01.root-me.org/web-serveur/ch6/
解题思路:
管理员应忘记删除安装文件,查看网页源码得知,该站使用phpbb程序搭建的,找到phpbb的程序安装路径。
http://challenge01.root-me.org/web-serveur/ch6/phpbb/install/install.php
第十二关:Improper redirect
靶机地址:http://challenge01.root-me.org/web-serveur/ch32/
解题思路:
跳转不当,点击访问,发现是302跳转,但302有主题内容,Flag在里面。
第十三关:CRLF
靶机地址:http://challenge01.root-me.org/web-serveur/ch14/
解题思路:
在日志中注入错误数据,CRLF注入在客户端安全里已讲过,这里在用户名里注入CRLF使其日志记录进行换行,达到欺骗。
第十四关:File upload - double extensions
靶机地址:http://challenge01.root-me.org/web-serveur/ch20/
解题思路:
这关考的是文件上传漏洞。经过测试是采用白名单机制验证,即不能上传其他后缀名文件,但是上传后没有重新命令文件名,导致可利用双扩展绕过。
照常理来说,访问/1.php.jpg是以图片进行解析,但这里却是以php进行解析,这应该和web配置环境有关。
第十五关:File upload - MIME type
靶机地址:http://challenge01.root-me.org/web-serveur/ch21/
解题思路:
这关考的是文件上传漏洞,后端验证了文件MIME类型,修改成图片类型即可绕过。
第十六关:HTTP cookies
靶机地址:http://challenge01.root-me.org/web-serveur/ch7/
解题思路:
点击页面链接,发现后端返回了一个cookie,网页源码里也在提示cookie。
用返回的cookie附带提交,提示不是管理员admin,那么把ch7值改成admin即可。
第十七关:Directory traversal
靶机地址:http://challenge01.root-me.org/web-serveur/ch15/ch15.php
解题思路:
根据提示:找到照片画廊的隐藏部分。这题考的也是目录遍历,不过目标文件名是隐藏的,需要自己找出来。
点击访问,通过观察,参数galerie的值存在目录遍历漏洞。
http://challenge01.root-me.org/web-serveur/ch15/ch15.php?galerie=devices
通过置galerie为空,则遍历当前目录,即可看到隐藏的目录86hwnX2r
再通过遍历86hwnX2r目录,即可看到此目录的:galerie/86hwnX2r/password.txt,访问此文件即可。
第十八关:File upload - null byte
靶机地址:http://challenge01.root-me.org/web-serveur/ch22/
解题思路:
这题考的是文件上传漏洞,经过测试也是进行白名单机制验证,双扩展名已被限制,0x00截断漏洞也不行,后端还是未修改文件名,可通过%00进行截断文件名。
第十九关:PHP assert()
靶机地址:http://challenge01.root-me.org/web-serveur/ch47/
解题思路:
通过构造不存在的页面,使其报错。
通过报错得知,当前是用assert()函数进行包含的。
推测大概的代码为:
$file = "includes/" . $page . ".php";
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");
assert("file_exists('$file') === false") or die("File does not exist");
#防止目录遍历和判断文件是否存在
首先需要明白assert()函数的一个特性:当参数为字符串时,会被当作php代码执行。也能使用#号注释后面的代码。
那么接下来,只需要闭合assert()函数内的strpos函数即可
assert("strpos('$file', '..') === false")
$file=1') or phpinfo();# =>assert("strpos('1') or phpinfo();#")
那么这里可以使用file_get_contents()函数来读取Flag,已知Flag在根目录里的.passwd文件,因为这里不能加双引号,故要写入一句话需要进行编码。