15关
抛开之前的不讲 显然,这是一个登录框,简单试一下万能密码 1' or 1=1;#
成功
16关
经过多次测试 payload是 1") or 1=1 #
做这题全靠对语句的了解,审视源码,发现他在变量前加上了""和()
17关
这里是修改密码的页面
$uname=check_input($_POST['uname']);
$passwd=$_POST['passwd'];
我们可以看到,用户名被check_input 包裹了,
而密码没有
function check_input($value)
{
if(!empty($value))
{
// truncation (see comments)
$value = substr($value,0,15);
}
// Stripslashes if magic quotes enabled
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}
// Quote if not a number
if (!ctype_digit($value))
{
$value = "'" . mysql_real_escape_string($value) . "'";
}
else
{
$value = intval($value);
}
return $value;
}
这是他的检查函数
传入的值首先只会提取,前15 位
get_magic_quotes_gpc — 获取当前 magic_quotes_gpc 的配置选项设置
如果 magic_quotes_gpc 为关闭时返回 0,否则返回 1。在 PHP 5.4.O 起将始终返回 FALSE。magic_quotes_gpc开启时用于在预定义字符(单引号、双引号、斜杠、NULL)前加上反斜杠,
5.4.0 始终返回 FALSE,因为这个魔术引号功能已经从 PHP 中移除了。
18关
post头部注入 bp抓包 基于之前爆破的用户名密码 发现输入正确的用户名密码后 会把user-Agent里的信息报出来 ,看源码
我们发现,它本身过滤的很好,但是在uagent的地方,直接进行了获取,直接进行了输出
同时进行了数据库的写入,发现是单引号的闭合
我们burp试试看,登录成功后,果然是UA可以进行注入,并回显
发现并没有我们想要的结果,那么我们尝试报错注入:1',1,extractvalue(1,concat(0x7e,(database()),0x7e)))#
将后面注释,同时闭合,然后执行我们的报错
19关
和18关类似 这个是在referer处的回显
抓包 在referer处将payload输入即可
1' and extractvalue(1,concat(0x7e,(database()),0x7e)) and '
因为不知道他的前后有几个参数,所以我们使用and进行连接,