RoarCTF Easy Calc wp

点开界面:
在这里插入图片描述
随便输入数字,抓包,发现有个php文件:
在这里插入图片描述
我们跳转看看:
在这里插入图片描述
看到了eval(),很容易想代码执行。
试着传入num参数为字符,发现:
在这里插入图片描述

方法一:

官方wp表示考点为php字符串解析绕过WAF(这做题的时候谁知道啊)
这里有一篇文章进行了详细介绍。

文章中对本题最关键的就是:
在这里插入图片描述
因此,我们可以试试用空格绕过forbidden。
经过测试之后,我发现只有将+%20放在num前面时才有用,即?+num=phpinfo()。此时有回显:
在这里插入图片描述
看来确实有代码执行。下一步就是通过函数来读取文件目录了。
我们先看看php禁用了啥函数:
在这里插入图片描述
我们常用的读取目录的php函数为scandir(),还好没被禁掉。
scandir()函数的作用为返回指定目录中的文件和目录的数组,用法如:

scandir('./');

但是在黑名单中,单引号和双引号被过滤了。
在这里插入图片描述
在这里插入图片描述
我们一般是用hexdec()bin2hex()将字符串转成16进制再转成10进制,这样就没有包含字符,就能绕过黑名单了。
hexdec()函数把十六进制转换为十进制。
bin2hex()函数把 ASCII 字符的字符串转换为十六进制值。
hex2bin()函数将十六进制转换成ASCII字符的字符串。
dechex()函数把十进制转换为十六进制。
于是,我们先得到十进制,然后用hex2bin(dechex())转回来。
/的十六进制为47。
所以我们写payload:?+num=scandir(hex2bin(dechex(47)))(尴尬的是,我测试的环境没有写出来,返回的为空的数组,很迷)
长这样
然后用file_get_contents()函数来读取文件,即可得到flag(虽然读取不到文件夹,但我用wp的语句读取到了flag,更迷了)

方法二:

利用http走私过狗,这里有一篇文章介绍了什么是http走私。我再尝试之后,发现CL-CL可用,于是我构造:
在这里插入图片描述
可以看到有phpinfo的回显,于是和刚才的流程一样,用scandir()函数读取文件目录,用readfile读取文件。即可得到flag。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值