[攻防世界]-WEB高手进阶区-love_math

题目

在这里插入图片描述
就这么点人答,可能是因为太简单了大佬都不稀做吧
在这里插入图片描述

这个奇怪的题打开以后是这样的
在这里插入图片描述
它可以做减乘除,唯独不能做加法

在这里插入图片描述

解题过程

我的解题方法简单粗暴,直接访问flag.php文件完活
在这里插入图片描述
当然这可能是他们的一个bug,真正的大佬谁会这样解呢,这题主要考的是如何构造payload执行命令

[官方步骤]

可以看到题目限制了参数的长度要小于80,且不能包含空格、制表符、换行、单双引号、反引号、[]。并且输入的字符串需要为$whitelist中的函数。

最终会执行 eval('echo '.$content.';');

既然想要getshell,我们必须要能够获取任意字符串。由于单双引号被ban掉了,我们无法从函数名中提取字符串。因此我们只能想办法从函数的返回结果中获取。

我们发现base_convert函数可以返回任意字母,需要注意它无法返回_ *等特殊字符。

借助getallheader()来控制请求头,通过请求头的字段读取flag.php。

这里也就类似于$_GET$_POST之类的,但是因为只能控制小写字符,所以大写的直接被pass掉。

getallheader()返回的是数组,要从数组里面取数据用array[‘xxx’],但是无奈[]被waf了,因为{}中是可以带数字的,这里用getallheader(){1}可以返回自定义头1里面的内容。

最后的payload如下:

0=system&1=cat%20flag.php&c=$pi=base_convert;$pi=$pi(53179,10,36)^$pi(1109136,10,36);${
    
    $pi}{
    
    0}(${
    
    $pi}{
    
    1})

利用burpsuite抓包,重放得到flag:

img

猜你喜欢

转载自blog.csdn.net/weixin_45728976/article/details/108913407