这关没有闭合符而且不报错,只能是否有回显来判断正误
爆表名:
爆内容:
?id=0 union select 1,2,group_concat(password) from users --+同样也可以堆叠注入
?id=1;create table test like emails;--+ 第四十二关这关又是熟悉的post,思路也是一样,但是这关的username输入有mysqli_real_escape_string函数管着,所以注入点在password
添加表tesst
删除表tesst login_user=admin1&login_password=admin1';drop table tesst %23; &mysubmit=Login 第四十三关
这关就是闭合换成了'),其他一样
添加表tesst
和四十二关一样,就是没有错误回显了
删除表tesst
和四十三关闭合一样,然后没回显
创建test45表
这关又有新东西,利用order by来注入
后台语句是这样的
$sql = "SELECT * FROM users ORDER BY $id";
显示结果不同,说明可以注入
desc是 descend 降序意思
asc 是 ascend 升序意思
可利用 order by 后的一些参数进行注入
order by 后的数字可以作为一个注入点。也就是构造order by 后的一个语句,让该语句执行结果为一个数,我们尝试
没有报错,但是 right 换成 left 都一样,说明数字没有起作用,我们考虑布尔类型。此时我们可以用报错注入和延时注入。
此处可以直接构造 ?sort= 后面的一个参数
1.利用一些函数。例如 rand()函数等。?sort=rand(sql 语句)
结果是不一样的
例子
对应上面的true和false,查看结果
可以进行布尔盲注
2.利用 and,例如 ?sort=1 and (加 sql 语句)。
同时,sql 语句可以利用报错注入和延时注入的方式,语句我们可以很灵活的构造。
例子
报错注入
时间注入
也可以程序分析参数后注入
?sort=1'procedure analyse(extractvalue(rand(),concat(0x3a,version())),1)--+
将查询结果导出到文件
3.直接添加注入语句,?sort=(select ***)
这关闭合变成单引号。
获得数据库版本
这关是数字型盲注,没有报错回显。
时间注入
这关是字符型盲注,没有报错回显。
?sort=1' and If(ascii(substr(database(),1,1))=116,sleep(3),0)--+ 第五十关这关还是之前的堆叠注入
创建less50表