宽字节注入笔记

SQL注入:

 select *from news where id='1' => id传参1

 闭合单引号,注释掉后面单引号(让我们的输入跳出单双引号)

 魔术引号是什么?

 magic_quotes_gpc(魔术引号开关)

 但引号、双引号、反斜杠(\)等字符都会被加上反斜杠

 magic_quotes_gpc的作用:当PHP的传参中有特殊字符就    会在前面加转义字符'\',来做一定的过滤。

低版本(php5.3) 修改配置文件然后强制运行

magic_quotes_gpc

高版本(php5.4)删除掉这个配置,用过特定的函数使用

Addslashes()

魔术引号:

不让你闭合?

绕过

1.找不需要闭合的地方

Select*from news where id=1

2.仔细查看作用域

$_SERVER

3.宽字节注入

无论是啥编码,最终都是转换为二进制(1/0)

汉字 => ASCII 数字

多字符编码=>多个字符组在一起成为一个字

GBK = 双字节编码

产生歧义:

英文编码:abcd => 用中文解码

编码不同歧义

单字节(ASCII能找到的全是单字节)

\ => 92(ASCII)单字节

两个单字节 => 双字节

select*from news where id='1?\' '

url编码 => 16进制

数据库使用GBK编码可能存在宽字节注入

传一个字符,将反斜杠吃掉成为汉字

尝试 => 我试试看宽字节

%df\ => 凑成汉字

df5c => 運

1.替代法 :'widechar' => database()

子查询的嵌套:'user' => select table_name from information_schema.tables where table_schema=database() limit 0,1)

2.16进制法:(标识

mysql支持16进制输入 替代字符串

'user' => 0x75736572

sqlmap有的时候需要手动帮助闭合

%df = url编码后的内容

BP抓包改hex

或者直接传参汉字:聂' or 1=1 -- q

课程回顾:

1.union联合查询 get注入

2.工具使用(谷歌浏览器插件、bp、sqlmap)

3.updatexml报错注入 POST/head传参

4.盲注 (布尔 、时间)ASCII /substr/sleep /concat/group_concat/子查询

5.宽字节:绕过魔术引导 %df或者任何能和\结合的东西、汉字 ,16进制编码0x  ,子查询的嵌套

思路:

1.找不用闭合

2.找作用域

非utf_8非英文编码都可行(这里指数据库编码,与前后端都没啥关系)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值