第27天:WEB攻防-通用漏洞&SQL注入&Tamper脚本&Base64&Json&md5等

不同payload类型的注入方式构造

当进行注入时 会发现有 数字型 字符型 搜索型 加密型(base64 json)等,其中构造payload的时候各个方式各不相同:

数字型,就是经常遇到的 ?id=1 这种类型。一般开发人员也不会对数字型进行闭合,可以直接后跟注入语句即可 ?id=1 and 1=2 union select database()--+

 

 字符型

常常就是option=news这种 需要传递的传输为字符串类型,这种接受字符串类型的参数,开发人员往往会对接受过来的字符使用双引号 单引号包裹起来。原sql语句可能是 select new from news where option=""$_GET['optin']" 这个时候传入的payload就要考虑闭合才可以

字符型

select * from inkbamboo where a='g'             假设这条语句为代码中查询的sql语句
simple' order by 16--+                                    该语句是要进行注入的语句
select * from inkbamboo where a='simple' order by 16--+'  语句融合

融合语句解释:'simple'被闭合了,order by 16进行了列数的查询,--+注释了后面的 ' ,这样就形成了注入

搜索型

往往有搜索框的地方也是可能存在注入的,因为很多内容都是存储在数据库中,想要完成搜索,就需要与数据库进行数据交互,如果没有做到安全的过滤或其他的防护手段往往也是会存在SQL注入的。常规的搜索处后台SQL语句是

select value from test where value like "%$_GET['value']%" ,这个时候我们想要对其进行注入,就需要考虑到闭合双引号及通配符的问题了。

select * from inkbamboo where name like '%$s%'     假设这条语句为代码中查询的sql语句
%' UNION+ALL+SELECT+1,database,2,3,4,5 and '%'='    该语句是要进行注入的语句
select * from inkbamboo where name like '%%' UNION+ALL+SELECT+1,database,2,3,4,5 and '%'='%'     语句融合

 加密/编码型

有时候会遇到 id=MQ==这种传输id值时,值为加密的base64或是其他,我们想要对其进行测试时,就需要将我们构造的payload进行base64加密后在进行测试

http://localhost:8080/blog/news.php?a=MQ==        假设这为某页面的url

1 union select 1,database(),3,4,5,7                          注入语句

MSB1bmlvbiBzZWxlY3QgMSxkYXRhYmFzZSgpLDMsNCw1LDc=        base64编码
 

Json格式,

有时候会有 {"id":1}这种格式的参数传递时,我们注入就需要考虑到json的特殊格式。在进行构造payload

原理:下面是一个简单的json格式数据,当把数据取出来时,并不会取出双引号,而且取出来的值默认是以单引号包含的。所以在进行注入时需要考虑单引号闭合。

SQLmap的进阶利用

sqlmap 的tamper利用

当我们测试的注入点是 base64加密,或者是对我们输入的 ' ' "" /等内容进行转义时

只需要我们在使用sqlmap时,加上对应的参数,启用相对的脚本绕过即可

如遇到base64加密的参数值想要对其进行注入时

python sqlmap.py -r 1.txt --tamper=base64encode.py 即可 sqlmap会自动对payload进行加密

宽字节绕过思路:

形成原因:有些判断自动给输入的特殊字符前增加  \ (如遇到对我们输入的 ' ' "" /转义时)

                  绕过它的方法就是 宽字节注入

如payload为 ?id=1 %23' union select database() --+ 这样才可以正常的让单引号发挥作用去闭合原本的sql语句中的单引号

宽字节及其他非普通手法  base64之类的   在sqlmap中  可以使用字典

python sqlmap.py -r 1.txt --tamper=unmagicquotes.py 启用这个脚本即可,就可以让sqlmap智能得在payload中加入宽字节等方法绕过转义函数。

启用对接受到的字符串进行转义的方法可以使用mysql的内置功能 magicquotes 或php的内置函数addslashes()。更多sqlmap的详细用法参考:1. sqlmap超详细笔记+思维导图 - bmjoker - 博客园 (cnblogs.com)icon-default.png?t=M85Bhttps://www.cnblogs.com/bmjoker/p/9326258.html

  

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值