SQL注入(10):POST注入
POST提交注入
POST提交注入有别于我们之前的注入方式,我们之前的注入方式都采用了GET请求的方式,而POST提交注入是使用POST请求的方式进行尝试注入。
POST提交、GET提交对比
- 
get提交可以被缓存,post提交不会 在浏览器地址栏、历史记录、书签都可以保存GET提交 
- 
get提交有长度限制,最长2048个字符; post提交没有长度要求,不是只允许使用ASCII字符,还可以使用二进制数据 
POST提交演示
这里我们使用less-11进行演示,并使用burpsuite进行抓包演示
 
我们可以发现,在内容区存在三个参数uname、passwd和submit。这三个参数就是我们刚刚提交的登录操作,我们可以选择放行Forward或丢弃Drop,这里我们选择放行。发现出现登录失败的提示。
 
一般来说,登陆的场景都是通过POST的方式提交的。
联合注入
我们在前面抓包分析后,发现提交的参数有三个,我们可以在hackbar添加Post data尝试我们之前GET提交熟悉的的流程,对网站注入点进行测试
- 
判断注入点闭合,并注释后面语句   
- 
group by二分法判断查询列数。发现无报错列数不符即可   
- 
把uname修改为不存在数字或为空(我这里已经是不存在的),测试联合查询   
- 
依次拿到靶机数据库名(可直接database())、表名、列名 表名   列名   
- 
拿取最终目标   
对于其他注入方式来说,流程上和方法上大致都无差异,最大差异在于把--+替换成#作注释掉后续代码。
