Less54-61
Less-54
这里开始进入挑战关卡,明显比前面难度提升了很多
直接看源代码吧
首先导入两个php文件
先看看sql-connect-1.php
连接mysql数据库,选择challenges这个数据库
再看看functions.php
里面定义了一堆函数,后面会一个个用到,我们先放着继续看下面的代码
这句代码将php文件的路径取了出来,我们把$pag值输出到文件看看
继续看下面
利用到functions里面的函数了,看看table_name这个函数
在mysql命令行输入
将取到的表名赋值给$table
将取得的两个列名分别赋值给两个变量
接着来到判断语句
当我们一开始还没有点击提交和重置按钮时
来到else语句,然后一开始cookie字段中没有challenge值
执行data函数
返回sessid值
然后设置cookie值
然后需要我们get传入id值,输入id值后
执行这个函数
一开始时tryy值为0
可见这个tryy值就是我们输入id的次数
当我们输入Id的次数大于10时,就执行
删除cookie中challenge字段值
并且重定向到另一个php文件同时get一个id值,值为
而这个php就是检测如果不存在challenges数据库的话就建立challenges这个数据库 ,并建立一个表,这个表的表名是随机的,见如下代码
并往这个表中添加数据
当我们post key值后点击提交按钮
则进行一个判断的sql语句
如果我们post值在col1列中,则返回1,否则不返回
然后成功提交key后,重定向到建立表的php,重新建立challenges表
也就是说,这关整体思路就是利用id值进行注入,有10次尝试的机会,一开始已经告诉我们表名是challenges,要在表中拿到key值
那么我们开始注入
首先一开始仍然是判断id有没有被引号包裹
发现被单引号包裹,那么接下来判断返回列数
返回3列
那就可以联合注入了
爆数据库
爆表
爆列
我们要找的key应该是在第三个列
最后报出key,提交
Less-55
这里没有报错信息,id被()包裹,尝试次数为14次,其他和之前关卡没有什么区别
Less-56
Id被(‘’)包裹,剩下的跟之前关卡一样
Less-57
Id被””包裹,剩下的和之前一样
Less-58
这关输入id值发现并没有返回正确信息,而且这里尝试次数仅为5次
看一下源代码
这里定义了一个数组,并且将用了一个数组顺序反转的函数array_reverse()
写个test测试一下
如果是关联数组
然后根据我们输入的id值进行mysql查询,将查询结果的id值作为数组的索引
所以输出一定是数组里的内容,不可能得到我们想要的信息,但是这里有报错信息显示,所以我们可以考虑用报错注入
Less-59
这里id没有被引号包裹,其他跟之前一样
Less-60
Id被(“”)包裹,其他跟之前一样
Less-61
这关id被((‘’))包裹,其他跟之前一样