博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
宽字节注入
阅读量:3906 次
发布时间:2019-05-23

本文共 683 字,大约阅读时间需要 2 分钟。

GBK双字节编码:一个汉字用两个字节表示,首字节对应0×81-0xFE,尾字节对应0×40-0xFE(除0×7F),刚好涵盖了转义符号\对应的编码0×5C。

0xD50×5C 对应了汉字“诚”,URL编码用百分号加字符的16进制编码表示字符,于是 %d5%5c 经URL解码后为“诚”。
下面分析攻击过程:
访问 /test.php?username=test%d5′%20or%201=1%23&pwd=test
经过浏览器编码,username参数值为(单引号的编码0×27)
username=test%d5%27%20or%201=1%23
经过php的url解码
username=test 0xd5 0×27 0×20 or 0×20 1=1 0×23 (为了便于阅读,在字符串与16进制编码之间加了空格)
经过PHP的GPC自动转义变成(单引号0×27被转义成\’对应的编码0×5c0×27):
username=test 0xd5 0×5c 0×27 0×20 or 0×20 1=1 0×23
因为在数据库初始化连接的时候SET NAMES ‘gbk’,0xd50×5c解码后为诚,0×27解码为’,0×20为空格,0×23为mysql的注释符#
上面的SQL语句最终为: SELECT * FROM user WHERE username=’test诚’ or 1=1#’ and password=’test’;
注释符#后面的字符串已经无效,等价于
SELECT * FROM user WHERE username=’test诚’ or 1

转载地址:http://uzqen.baihongyu.com/

你可能感兴趣的文章
【原创】swarm源码分析(3)---manage cluster
查看>>
【原创】swarm源码分析(4)---Scheduler和Api
查看>>
白话面向智能体编程(Agent Oriented Programmig, AOP)之一
查看>>
白话面向智能体编程(Agent Oriented Programmig, AOP)之二
查看>>
白话面向智能体编程(Agent Oriented Programmig, AOP)之三
查看>>
白话面向智能体编程(Agent Oriented Programmig, AOP)之四
查看>>
用fpm来做rpm打包
查看>>
golang时间戳格式化与解析
查看>>
golang-net/http源码分析之http server
查看>>
2016年个人总结
查看>>
以无厚入有间,恢恢乎其于游刃必有余地矣
查看>>
程序员的外功和内功的修炼
查看>>
谈谈分布式多智能体中的显式协调机制
查看>>
2017年个人总结
查看>>
以太坊源码分析---go-ethereum之p2p通信分析(1)
查看>>
以太坊源码分析---go-ethereum之p2p通信分析(2)
查看>>
[以太坊源代码分析] I.区块和交易,合约和虚拟机
查看>>
[以太坊源代码分析] II. 数据的呈现和组织,缓存和更新
查看>>
[以太坊源代码分析]III. 挖矿和共识算法的奥秘
查看>>
[以太坊源代码分析] IV. 椭圆曲线密码学和以太坊中的椭圆曲线数字签名算法应用
查看>>