【[RoarCTF 2019]Easy Calc】

在这里插入图片描述

信息搜集

打开目标页面,搜集下可用的信息。
在这里插入图片描述
在文本框随便输入了点字母,发现提示。
在这里插入图片描述
打开页面源码,发现了提示,有waf存在。并且发现数据发送到calc.php页面,参数是num。
在这里插入图片描述
在这里插入图片描述
打开calc.php页面发现源码。
在这里插入图片描述

在这里插入图片描述
http://node4.buuoj.cn:28614/calc.php? num=phpinfo()
Num参数前加一个空格。
为什么要num参数前加一个空格,是因为加一个空格为了绕过waf,在请求传递到waf层的时候,waf会检测num变量,当num前面加一个空格时,目标变量会找不到.waf眼中( num!=num)。直接绕过了waf检测。
而在php服务中,将会把空格过自动过滤掉。自动转成num变量。

在这里插入图片描述
打开phpinfo页面中,先看下服务配置信息。
在这里插入图片描述
发现禁用了system函数,因此需要通过其它函数执行系统指令,可再看下,发现可用的系统执行函数,都被禁用了。。。。。。
首先明确下目标,是否一定要执行系统指令,发现其实并不需要执行系统指令,我们只需要获取系统文件信息,读取flag文件即可。
那么下一步需要读取系统文件信息。
百度了下,找到了scandir()函数,这个函数相对于其它读取目录的函数而言,使用比较方便。

获取系统目录文件信息

在这里插入图片描述
由于正则匹配的存在,不可以直接使用/,因此需要使用chr()函数,将ASCII码转为字符。
在这里插入图片描述
执行后,发现存在问题,由于获取到的结果是数组存储的格式,eva()函数中自带的echo函数不能输出获取到的结果。
在这里插入图片描述
使用print_r()函数读取scandir()函数获取后数组值。或者var_dump()函数也可以进行读取数组值。
读取获取到的数组值,发现存在f1agg文件。
下一步就是读取f1agg文件。

读取flag文件

在这里插入图片描述
发现是空白页面。由于/被过滤,因此继续需要通过chr()函数转义。
file_get_contents()函数可以直接读取文件内容。
Payload=file_get_contents(chr(47).f1agg)

在这里插入图片描述
获取到flag。

参考链接:https://www.baidu.com.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值