深入浅出带你玩转sqlilabs(三)--GET,POST,COOKIE,万能密码注入
常见提交方式下的注入漏洞
WEB应用在数据传递接受中,针对SQL注入安全漏洞,由于数据大小,格式等原因,脚本在接受传递时会有多种传递方式,传递方式的不同将影响到安全测试的不同
第一点:数据常见提交方式
https://www.cnblogs.com/weibanggang/p/9454581.html

get与request提交方式:
本地测试,直接使用链接传参,各种提交方式的效果如下图,get与request提交方式本地有回显,说明这两个提交方式可以通过链接传参发送到服务器

post提交方式:
给服务器同时本地echo回显:用post data插件,或者用burpsuite抓包改数据

cookie提交方式:
用burpsuite直接在响应正文插入cookie值


$_SERVER['HTTP_ACCEPT']的作用(头部注入)

先输入账户加个’看看报错

分析:

参数有第2对单引号进行闭合,就好办了

注意:注入的方式有三个:post data插件,burpsuite抓包改包,还有直接在框里面直接填
这里推荐用post data插件,简单直观,先右键查看源代码表单哪些元素要post提交的

就这三个元素(提交的时候一个也不能漏)

用uname参数进行闭合(三个参数之间用&连接)
uname=-gsdftg' order by 2#&passwd=pass&submit=Submit
报错负号(显示错误信息),闭合单引号(执行我们的命令),注释负号#(不使用--+注释的原因是:POST参数不经过url编码,命令传输到后端注释符变不了标准注释符:-- (后面有空格))

注入成功
随便输入表单,抓一下包,第一个包(POST包)是登录验证的请求包,将cookie存储在服务器同时在本地留下session信息

再里面加个cookie信息,然后放过去
第二个包(GET包)直接验证cookie,与第一个包相互匹配,一样改个cookie,放过去


登录成功,查看历史包找到GET包,改包

报错

报错,注释,一把梭

补充:request请求方式是包含其他请求方式(GET,POST,COOKIE等)的,也就是说,用其他请求方式请求的数据,request请求也可以做到,这个适用范围就很广了,如bypass方面等
先来看一下正常登陆进去的界面,正确的账号密码都是admin


同时抓包看看数据传输与SQL语句执行

可以看到这里的uname与passwd参数传递到SQL语句中的username与password参数中进行查询,由于①username and ②password 的逻辑判断:真and真=真,所以可以登录成功,那么我们只需要构造一个逻辑判断为真的SQL参数,即可进行万能登录的操作
比如在用户名输入框中输入:
admin' or '1'='1# //逻辑判断:真或真=真,可登录,最后别忘了用#号注释掉后面的SQL语句

或者
admin' or 1=1# 真或真=真

或者
admin'and ''=''# 真或假=真

或者
admin'or' 真或假=真

思路一样,只是将username参数变为假,password为真的“or”判断
'or '1'='1'limit 1# 假或真=真 (limit语句要不要都一样)


浙公网安备 33010602011771号