http 头注入、cookie 注入

less-18 http头注入

本题正确输入的话,返回 http 头的 User-Agent 信息

查看源码

admin 和 password 输出中都经过了check_input的过滤,不存在注入

$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";

但源码存在这么一句,$uagent 是读取 http 头中的 User-Agent 字段,这个字段是我们可以修改的,所以这里存在一个注入点。
本题关键闭合 insert into 这里一整个语句,由于 $uagent 字段我们可控,前面指定了三个字段,所以在传入是必须传入三个值,所以使 $uagent 为 ‘,1,1)# ,即使整条的内容为

$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('',1,1)#', '$IP', $uname)";

若 $uagent 的值传入错误,会报错,因此本题可采用报错注入

less-19 http头注入

本题跟18题相同,只是注入点到了 http 头的 Referer

$insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')";

关键语句只接收两个字段的值,方法同18

less-20 cookie注入

本题输入账号密码登录后,页面返回了 cookie 值

源码中的查询语句为

$sql="SELECT * FROM users WHERE username='$cookee' LIMIT 0,1";

$cookie 就是cookie的值,所以这里只需要控制cookie的值即可完成注入

总结

http 头注入和 cookie 注入的本质还 union注入 和 报错注入,只不过是注入的位置不同