【root-me CTF练习】Web服务器安全

目录

 

第一关:HTML

第二关:HTTP - Open redirect

第三关:Command injection

第四关:Weak password

第五关:User-agent

第六关:Backup file

第七关:HTTP - POST

第八关:HTTP directory indexing

第九关:HTTP Headers

第十关:HTTP verb tampering

第十一关:Install files

第十二关:Improper redirect

第十三关:CRLF

第十四关:File upload - double extensions

第十五关:File upload - MIME type

第十六关:HTTP cookies

第十七关:Directory traversal

第十八关:File upload - null byte

第十九关:PHP assert()


第一关: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文件,因为这里不能加双引号,故要写入一句话需要进行编码。

猜你喜欢

转载自blog.csdn.net/a15803617402/article/details/83069910
今日推荐