前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL注入经验-大负荷注入

SQL注入经验-大负荷注入

作者头像
Gcow安全团队
发布2020-03-19 18:07:49
7760
发布2020-03-19 18:07:49
举报
文章被收录于专栏:Gcow安全团队Gcow安全团队

注:本文出自Gcow安全团队绝影小组成员瞳话

SQL注入经验—利用笛卡尔算积进行大负荷注入

在常见的渗透测试中,我们都知道SQL注入攻击中有联合查询,报错注入,盲注还有DNS注入等等,那么如果一个网站存在基于时间的盲注,而恰好sleep这类核心函数被过滤的话,我们如何绕过进行注入呢,这里就分享一个经验——大负荷注入。

一. 笛卡尔算积

作为一个数学7分的我来说,看到这个数学名词瞬间就不想接着往下研究了,不过还好这个并不是很难,我就简单的讲解一下

看图:

也就是说数字1先去乘以ABC,然后数字2再去乘以ABC,然后数字3再去乘以ABC,是不是感觉很熟悉,其实就是Burp suite里面的Intruder模块的Attack type里面的Clutser bomb攻击方式

二. 大负荷查询

Mysql支持这种运算方式,我们的思路是让Mysql进行笛卡尔算积使其造成大负荷查询达到延时的效果。

既然要用笛卡尔算积就要需要大额的数值来计算,在mysql数据库中都有information_schema这个表,这个表里面的数据还是蛮多的,查询一下数量

然后我们进行笛卡尔积运算,不难发现数值的大小影响了计算的速度,通过采用1个表2个列,或者2个列一个表,等等各种组合找出合适的延时的时间。

这里给出payload

select * from admin where id = 1 and 1 and (SELECT count(*) FROM information_schema.columns A, information_schema.columns B, information_schema.tables C);

你完全可以按照这个规律,从C后面加个逗号,写D,E等等等,想写多少就写多少,但是写的越多查询的速度就会越慢,如果在表或者列数量很少的情况下,可以写的多一点。

到浏览器实践一下,发现确实延迟了

利用这个方法,开始注入就可以

先查询一下当前数据库,这里是为了节约时间和验证

可见是数据库名是test,字母t的Ascii码是116,这里构造payload

发现延迟了5秒,其实这5秒只是数据库进行大负荷的笛卡尔算积

如果Ascii码不对,则会不会产生延迟从而不会回显数据

放在浏览器运行一下

尝试错误的Ascii数值

这里就不多演示爆表名,列名还有数据了,会手工布尔盲注的人应该都懂。

最后附上靶场的源码:

<?php

header("Content-type: text/html; charset=utf-8");

$conn=mysql_connect('localhost', 你的数据库用户名, 你的数据库密码);

mysql_select_db("test",$conn);

$uid=($_GET['id']);

$sql="SELECT * FROM admin where id=$uid";

$result=mysql_query($sql, $conn);

print_r('当前SQL语句: '.$sql.'<br /><hr />结果: ');

print_r(mysql_fetch_row($result));

mysql_close();

?>

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Gcow安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档