渗透测试之SQL注入(POST型的四种注入手法)、SQL注入绕过手段


POST和GET的区别就是注入点位置发生了变化,在浏览器中已经无法直接进行查看与修改。当然可以借助对应的插件可以完成修改任务。

使用BurpSuite进行post请求的抓包

以Sqli-Lab Less11为例。在这里插入图片描述
查看抓的包
在这里插入图片描述
将抓到的包发送到repeater模块,就可以进行重复测试了
在这里插入图片描述
初步判断sql语句大概为:select uname,passwd from tbname where uname='$uname' and passwd ='$passwd‘ limit 0,1

这时候,我们就可以通过构造sql语句来进行注入:登陆成功!
在这里插入图片描述

使用联合查询进行注入:

在这里插入图片描述

使用报错注入进行注入:

在这里插入图片描述

以Sqli-Lab Less15为例。

布尔盲注:

在这里插入图片描述
在这里插入图片描述
然后根据页面的变化进行猜测就可以了

时延查询:

在存在注入点POST提交的参数后加 and if(length(database())>5,sleep(5),null)。如果执行的页面响应时间大于5秒,那么肯定就存在注入,并且对应的SQL语句执行。

在这里插入图片描述
之后就一一猜就完了

SQL注入绕过手段

大小写字母绕过

如果程序中设置了过滤关键字,但是过滤过程中并没有对关键字组成进行深入分析过滤,导致只是对整体进行过滤。
例如: and过滤。当然这种过滤只是发现关键字出现,并不会对关键字处理。
通过修改关键字内字母大小写来绕过过滤措施。例如:AnD 1=1
and 和 or 还可以转换成符号&&和||
例如:在进行探测当前表的字段数时,使用order by数字进行探测。如果过滤了order,可以使用OrdER来进行绕过。

双写绕过

如果在程序中设置出现关键字之后替换为空,那么SQL注入攻击也不会发生。对于这样的过滤策略可以使用双写绕过。因为在过滤过程中只进行了以此替换。就是将关键字替换为对应的空。

例如:可以通过uniunionon这种方式来进行绕过,中间那个union被替换为空,两边的就会自动组成关键字。

编码绕过

可以利用网络中的URL在线编码或者16进制编码,绕过SQL注入的过滤机制。
编码之后,到服务器后mysql会自动解码识别。
空格使用%20表示、%0a换行、%09 tab
例如:less27
在这里插入图片描述

内联注释或多行注释绕过

在Mysql中内联注释中的内容可以被当作SQL语句执行。
在这里插入图片描述
例如:可以通过uni/**/on这种方式来进行绕过,两边的就会自动组成关键字。

绕过注释被过滤的sql注入

如果注释被过滤,不能成功闭合单引号,我们可以换一种思路利用 or ‘1’='1闭合单引号。
less23为例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值