Bugku-WEB-冬至红包


 

打开网页

 

 

 

显然是代码审计了,分析代码

当没有用GET方法传入flag时,会显示Click here的链接。

点击链接会用GET方法传入一串字符串$exam,后面是当前时间的一串sha1哈希值。

判断传入的flag长度与$exam是否相同,不同则显示  长度不允许

 

第二个判断过滤了一大堆

第三个判断传入flag的值等于flag值的哈希值,正确就输出flag。用的是严格的三个等号的比较,我们flag都不知道,哈希值更不可能知道了,==

但容易发现此处存在任意代码执行漏洞, 

eval($_GET['flag'])

 

尝试绕过过滤

echo被过滤了,用php短标签进行输出

flag被过滤了,用先赋其他值,再修改的方法绕过

 

当php开启短标签后,

能正常解析类似于这样形式的php文件: phpinfo() ?>

并且可以使用<?=$a?>的形式输出

 

$exam字符串长度为49

为了使payload长度与$exam长度相等,在代码间加入无意义的语句。

构造payload:$a=blag;$a{0}=f;111111111111111111111;?><?=$$a;?>

 

成功得到flag

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM