mysql 延时注入新思路
转自先知社区https://xz.aliyun.com/t/2288
在4月的pwnhub比赛中,我们遇到了一个比较神奇的问题,如果在注入中遇到需要延时注入的情况,但服务端过滤了我们一般使用的sleep和benchmark函数,这时候我们有没有办法使用别的方式来替代这两个函数造成延时呢?
这里可以代码看看
<?php require 'conn.php'; $id = $_GET['id']; if(preg_match("/(sleep|benchmark|outfile|dumpfile|load_file|join)/i", $_GET['id'])) { die("you bad bad!"); } $sql = "select * from article where id='".intval($id)."'"; $res = mysql_query($sql); if(!$res){ die("404 not found!"); } $row = mysql_fetch_array($res, MYSQL_ASSOC); mysql_query("update view set view_times=view_times+1 where id = '".$id." '"); ?>
很明显$id
没有任何过滤就拼接入了update语句,一般来说我们可以用延时盲注来获取数据。
一般我们会用sleep(5)
或者是benchmark
来多次执行md5操作来换取比较长的执行时间来替代延时。
那么是不是有别的方式替代呢?
笛卡儿积
https://blog.csdn.net/niexinming/article/details/52980140
这种方法又叫做heavy query
,可以通过选定一个大表来做笛卡儿积,但这种方式执行时间会几何倍数的提升,在站比较大的情况下会造成几何倍数的效果,实际利用起来非常不好用。
mysql> SELECT count(*) FROM information_schema.columns A, information_schema.columns B; +-----------+ | count(*) | +-----------+ | +-----------+ row in set (9.87 sec)
在一个列数比较少的站内,可能需要3个表做笛卡尔积,延时已经是分钟级别的了
get_lock
这是一种比较神奇的利用技巧,延时是精确可控的,但问题在于并不是所有站都能实现。
https://zhuanlan.zhihu.com/p/35245598
get_lock的官方解释如下
GET_LOCK(str,timeout) Tries to obtain a lock with a name given by the string str, using a timeout of timeout seconds. A negative timeout value means infinite timeout. The lock is exclusive. While held by one session, other sessions cannot obtain a lock of the same name.
当我们锁定一个变量之后,另一个session再次包含这个变量就会产生延迟。
mysql); +---------------------+ ) | +---------------------+ | +---------------------+ row in set (0.00 sec)
换新的session
mysql); +---------------------+ ) | +---------------------+ | +---------------------+ row in set (5.00 sec)
值得注意的是,利用场景是有条件限制的:需要提供长连接。在Apache+PHP搭建的环境中需要使用 mysql_pconnect函数来连接数据库。
正则bug
这是一个老生常谈的问题了,但之前可能很少会把它放到注入里讨论。
正则匹配在匹配较长字符串但自由度比较高的字符串时,会造成比较大的计算量,我们通过rpad
或repeat
构造长字符串,加以计算量大的pattern,通过控制字符串长度我们可以控制延时。
mysql,),'b'); +-------------------------------------------------------------+ ,),'b') | +-------------------------------------------------------------+ | +-------------------------------------------------------------+ row in set (5.22 sec)
mysql 延时注入新思路的更多相关文章
- Mysql常见注入
Mysql显错注入 1.判断注入类型为字符型:http://219.153.49.228:43074/new_list.php?id=tingjigonggao' and 1=1 --+2.判断字段为 ...
- sqli-labs:7,导入导出;8-10 延时注入
1,Load_file()导出文件 使用条件: A.必须有权限读取并且文件必须完全可读(and (select count(*) from mysql.user)>0/* 如果结果返回正常,说明 ...
- MySQL的注入总结
0x01 MySQL 5.0以上和MySQL 5.0以下版本的区别 MySQL5.0以上版本存在一个叫information_schema的数据库,它存储着数据库的所有信息,其中保存着关于MySQL服 ...
- sqli-labs lesson 7-10 (文件导出,布尔盲注,延时注入)
写在前面: 首先需要更改一下数据库用户的权限用于我们之后的操作. 首先在mysql命令行中用show variables like '%secure%';查看 secure-file-priv 当前的 ...
- Sqli-LABS通关笔录-9[延时注入]
通过这个关卡 1.更快的掌握到了如何判断是否是延时注入 无论咋输入,都不行.当payload为: http://127.0.0.1/sql/Less-9/index.php?id=1' and sle ...
- SQLMAP学习笔记2 Mysql数据库注入
SQLMAP学习笔记2 Mysql数据库注入 注入流程 (如果网站需要登录,就要用到cookie信息,通过F12开发者工具获取cookie信息) sqlmap -u "URL" - ...
- Sqli-LABS通关笔录-8[延时注入]
通过该关卡我学习到了 1.if语句的三目运算符(其实说白了也就是php里的三位运算符) 2.sleep函数 3.substring函数(其实和substr一样) 4.limit的灵活运用 5. Sta ...
- MYSQL手工注入(详细步骤)—— 待补充
0x00 SQL注入的分类: (1)基于从服务器接收到的响应 ▲基于错误的 SQL 注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL 盲注 ...
- Mysql基本注入
实验环境:墨者学院Mysql手工注入漏洞测试靶场 后台源码没有进行任何字符过滤. 首先进入靶场环境 先用admin登陆试试 果然不行,这时看到用户登录下方有一个停机维护通知,点进去瞅瞅 看到这里链接上 ...
随机推荐
- Python中使用moviepy进行视频分割
场景 moviepy官网: https://pypi.org/project/moviepy/ 是一个用于视频编辑的Python库:切割.连接.标题插入.视频合成.非线性编辑,视频处理和定制效果的创建 ...
- Salesforce学习之路-admin篇
Salesforce是一款非常强大的CRM(Customer Relationship Management)系统,国外企业使用十分频繁,而国内目前仅有几家在使用(当然,国内外企使用的依旧较多),因此 ...
- Jenkins把GitHub项目做成Docker镜像
本文是<Jenkins流水线(pipeline)实战>系列的第三篇,前面已对Jenkins流水线有了基本认识,也试过从GitHub下载pipeline脚本并执行,今天的实战是编写一段pip ...
- NPOI 导出添加批注功能
这个问题在网上搜,都是说如下即可: //添加批注HSSFPatriarch patr = (HSSFPatriarch)sheet.CreateDrawingPatriarch();HSSFComme ...
- [Linux] telnet 具体到某个端口Connection refused
可以参考这个链接:https://q.cnblogs.com/q/106337/
- php 两种获取分类树的方法
php 两种获取分类树的方法 1. /** * 获取分类树 * @param array $array 数据源 * @param int $pid 父级ID * @param int $level 分 ...
- 修改tomcat 使用的JVM的内存
一,前言 在文章让tomcat使用指定JDK中,我让tomcat成功使用了我指定的JDK1.8,而不是环境变量中配置的JDK10.本篇文章我们就来探讨一下怎么设置tomcat使用的JVM的内存. 为什 ...
- 使用Git工具批量拉取代码
公司项目比较多,每天上班第一件事就是拉取代码,cd A 目录 git pull cd .. cd B ...... 一个项目一个项目的拉取,感觉也是很费劲的,那么有没有什么一键操作呢 现在执行一个命令 ...
- 基于docker构建测试环境
目录 0x01介绍 0x02 镜像基本操作 0x03 容器基本操作 0x04 容器的修改与保存 0x05 使用Dockerfile定制镜像 0x01介绍 Docker 是一个开源的应用容器引擎,基于 ...
- JS中如何防止表单重复提交问题
在登录页面html中写如下代码 <script type="text/javascript"> var issubmit=false; function dosubmi ...