0
点赞
收藏
分享

微信扫一扫

sqli-labs闯关1-5

河南妞 2022-02-25 阅读 29

第一关

1.经过语句and 1=2测试 ,页面回显正常,所以该地方不是数值查询

2.接着尝试在id后面加上',发现页面回显不正常,表示可能存在SQL字符注入

 3.输入--+将sql后面的语句注视掉后,发现页面回显正常,则证明这个地方是单引号字符型注入

 4.接着使用order by 语句判断,该表中一共有几列数据

  order by 3页面回显正常,order by 4页面回显不正常,说明此表一个有3列。5.将id=1改为一个数据库不存在的id值,如861,使用union select 1,2,3联合查询语句查看页面是否有显示位。

 发现页面先输出了2和3,说明页面有2个显示位
6.然后利用sql查询语句依次爆破出数据库内的数据库名,表名,列名,字段信息
例子:
http://127.0.0.1/sqli-labs/Less-1/?id=861' union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+
这是一个查询数据库名信息的语句

 第二关

1.输入?id=2-1页面信息发生变化,说明此处是数值型注入

 2 order by 3  页面显示正常,order by 4页面显示不正常,所以该表有3列数据

3  接着可以使用联合查询进行注入,详细过程参考第一关

第三关

1.向页面输入?id=2'  --+页面显示不正常

但是输入  ?id=2') --+ 页面回显正常,说明此处是字符型注入,而且是以 ('')的方式闭合字符串的

 2.接着使用order by 判断表中有3列数据

3.接着使用联合查询,union select 1,2,3 判断页面是否有显示位   答案:有

下面使用第一关所使用的查询语句,测试一下

 

 第四关

与第三关类似,第四关使用   ("")   的方式闭合字符串,然后可以优先使用联合查询注入

1.当输入?id=3" --+时,页面显示不正常

 2.当输入?id=3") --+

 第五关

首先在未知闭合方式的条件下,构造payload进行测试

127.0.0.1/sql/Less-5/?id=1

观察到页面回显如下

 重新构造payload

127.0.0.1/sql/Less-5/?id=1'

观察到页面回显sql查询语句错误

 这里说明我们已经猜中了其闭合方式,后台构造的查询语句为
$sql= “SELECT * FROM 表名 WHERE id = ‘id’ LIMIT 0,1”

构造新的payload

127.0.0.1/sql/Less-5/?id=1' order by 3 --+

回显结果与第一次回显结果一致

我们判断原本的方法已经不能使用,在正常的查询语句下,只会显示You are in …,而在错误的情况下,会爆出sql语句错误的信息,只存在正确和错误两种返回结果,并且不能像前四关一样再去判断显示位,因为根本没有显示位可以利用。

故我们可以猜想,通过一些方法,能不能让在爆出错误的信息下而获得到我们想要的信息呢?
答案是可以的,通过一些特有的函数,我们可以在错误的信息中得到正确的信息。

因为我们已知闭合方式为单引号
基于报错经常使用的函数
updatexml函数,extractvalue函数,floor函数
构造新的payload
这里,我们可以看到爆出使用的库名为security127.0.0.1/sql/Less-5/?id=-1' OR 1 GROUP BY CONCAT_WS(0x3a,database(),FLOOR(RAN(0)*2)) HAVING MIN(0) OR 1 --+

 这里,我们可以看到爆出使用的库名为security

知道库名之后,我们再构造新的payload,用来获取security库中的表

?id=0' UNION SELECT 1,2,3 from ( select count(*),concat(floor(rand(0)*2),(select database()))a from information_schema.tables group by a)b--+

 这里我们可以知道,security库中有emails, referers,agents,users 四个表

举报

相关推荐

0 条评论