知识点:
MD5强碰撞
%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
这俩MD5值相同但是对应的源字符串不相同。
命令执行漏洞,绕过过滤姿势
linux中读文件的命令:
(1)more:一页一页的显示档案内容
(2)less:与 more 类似,但是比 more 更好的是,他可以[pg dn][pg up]翻页
(3)head:查看头几行
(4)tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
(5)tail:查看尾几行
(6)nl:显示的时候,顺便输出行号
(7)od:以二进制的方式读取档案内容(不推荐)
(8)vi:一种编辑器,这个也可以查看
(9)vim:一种编辑器,这个也可以查看(靶机测试不能用)
(10)sort:可以查看
(11)uniq:可以查看
(12)file -f和 tailf
原文链接:https://blog.csdn.net/rfrder/article/details/109654384
解题:
这里提示说是base64加密了,回应里面是被base64加密的图片。请求包里面img后面是base64加密的文件。解密之后发现还是一个base64加密格式再解密,得到一个16进制的一串字符。解密得到555.pnf。那么反推回去,应该也能回显出index.php经过一系列加密的内容。
回显了一段base64编码解码之后就能看到源代码了。
PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回
所以只要绕过传入一个字符串不同但是md5值相同的值即可。
看到有flag文件,用ca\t绕过对cat的过滤。
总结:难点在于md5强碰撞。