PHP代码审计-------宽字节注入及二次注入

        宽字节    mysql 特性,两个字符是一个汉字,   二次注入,; 分号后面继续

宽字节注入

        字符、字符集与字符序
                字符(character)是组成字符集(character set)的基本单位,对字符赋予一个数值(encoding)来确定这个字符在该字符集中的位置。
字符序(collation)指同一字符集内字符间的比较规则。

        UTF8
                由于ASCII表示的字符只有128个,因此网络世界的规范是使用UNICODE编码,但是用ASCI表示的字符使用UNICODE并不高效。因此出现了中间格式字符集,被称为通用转换格式,及UTF

        宽字节
                GB2312、GBK、GB18030、BIG5、ShiftJS等这些都是常说的宽字节,实际上只有两字节。宽字节带来的安全问题主要是吃ASCII字符(一字节)的现象

数字型

intval() 函数用于获取变量的整数值。

 

不加的话,会报错

字符型

        addslashes()

会有转义

 

 思路:

        怎么逃逸单引号的限制??

想到宽字节注入 

                因为%df的关系,的编码%5c被吃掉了,也就失去了转义的效果直接被带入到mysql中,然后mysql在解读时无视了%a0%5c形成的新字节,那么单引号便重新发挥了效果

        

 %df   好像不行了

        宽字节注入只能用%df吗

还可以用汉字绕过,因为一个汉字PHP接受的时候是UTF-8编码,然后是个三字节编码,这个汉字和反斜杠两两配对组成两个汉字然后使单引号逃逸

`

二次注入原理

        注入点因为经过过滤处理无法触发sql注入漏洞,比如addslashes函数,将单引号等字符转义变成但是存进数据库后,数据又被还原,在这种情况下,如果发现一个新的注入同时引用了被插入的数据库数据,就可以实现闭合新发现的注入漏洞引发二次注入

二阶注入
1.攻击者在http请求中提交恶意输入
2恶意输入保存在数据库中
3攻击者提交第二次http请求
4为处理第二次http请求,程序在检索存储在数据库中的恶意输入,构造SQL语句
5如果攻击成功,在第二次请求响应中返回结果

利用注册功能点,把我们的sql语句写进去,  保存到对方数据库中,我们再利用查询功能 去触发,存在对方数据库中的 sql语句

 注册的时候,写入进去,但在数据库中,会被还原掉

查询一个用户

再去查询页面,去查询44

带出来了

这就是二次注入原理

思路:

先将注入语句插入到数据库,注册、留言板等功能都具有insert数据库的操作然后在使用update的地方触发插入到数据库的注入语句

写的不好,可能我自己也没太理解吧

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值