参考:https://blog.csdn.net/qq_53460654/article/details/116798346
1 | <?php |
先是一个md5碰撞,因为要利用b来传值,所以只能用碰撞
为了绕过wakeup,还需要改元素数量使其不匹配
因为./sandbox/lock.lock
这个文件存在,而我们需要利用echo file_get_contents(substr($_POST['b'],0,30));
,所以必须把这个文件删掉
这里利用ZipArchive 内置类的open方法达到删除文件效果
令$filename = ‘./sandbox/lock.lock’;$content = 8;
(8应该是因为context的第八个是Zip context options,参考:https://www.php.net/manual/zh/context.php
)
payload
1 | <?php |
先上传```a[]=1&b[]=2&c=O:5:”Jesen”:4:{s:8:”filename”;s:19:”./sandbox/lock.lock”;s:7:”content”;i:8;s:2:”me”;O:10:”ZipArchive”:5:{s:6:”status”;i:0;s:9:”statusSys”;i:0;s:8:”numFiles”;i:0;s:8:”filename”;s:0:””;s:7:”comment”;s:0:””;}}
1 |
|
不过这样就不能找现成的碰撞了,多亏大佬给了一个很方便的工具——fastcoll:https://www.zeroplace.cn/article.asp?id=886
不过不建议在那个网站安装,建议在官网https://www.win.tue.nl/hashclash/
得到1 _msg1.txt和1 _msg2.txt文件
url编码:
1 | <?php |
构建一个凑数用的c:
1 | <?php |
最终payload:
1 |