HTTP头伪造

D0wnBe@t Lv4

前言

完成上课的web作业,顺便做一些记录。

该部分主要是讲HTTP头的构造和cookie注入

[极客大挑战 2019]Http

打开网站之后查看源码,发现:

于是打开看看

  • 很明显是要我们自己构造HTTP的请求头,这里分为两种工具,一个是yakit,还有个是浏览器hackbar插件(我用的是Google)

yakit抓包构造http请求头

1.修改访问网站

2.指定浏览器

3.从本地访问

hackbar修改http请求头

[极客大挑战 2019]BuyFlag

  • 点开PAYFLAG页面查看源代码
  • 要求如下,同时在源代码还隐藏着东西

  • 要求我们进行POST请求发送password和money,并且password有如上的要求,先看抓包

修改cookie

  • 发现Cookie可以改,将user=0修改为user=1

弱比较

  • 发现我们已经是学生了,下面修改password和money
  • 注意要是POST请求,yakit右键可以直接改为POST请求
  • 对于上述的password来说,输入纯数字会被判定为不通过,但是后面的比较是==,这是个弱比较,会在某些情况下将$password的类型隐式转换,即我们输入404a(404后面无所谓什么字符)==会略过非数字型,直接比较404,这样就绕过了判断。
1
2
3
4
5
6
7
8
if (isset($_POST['password'])) {
$password = $_POST['password'];
if (is_numeric($password)) {
echo "password can't be number</br>";
}elseif ($password == 404) {
echo "Password Right!</br>";
}
}

数组绕过

  • 显示money的长度过长,直接改为数组绕过:

在 PHP 中,数组可以触发一些意想不到的宽松比较行为。因为在宽松比较下,PHP 会尝试将数组转换成其他类型进行比较,这样可以绕过某些验证条件。例如,在比较中,将数组与整数或字符串进行宽松比较时,PHP 的行为如下:

  1. 数组与整数比较:当数组和整数进行比较时,PHP 会将数组视为 true,即非空的数组在宽松比较中等价于 true。因此:

    1
    [] == 0  // true

    任何非空数组,比如 [404],与整数进行比较时,PHP 会将数组视为 true,因此 0 == true 会被认为成立。

[BSidesCF 2019]Kookie

  • 要求是admin登录,题目给了一个账号cookie密码是monster

  • 登陆后抓包看看:

  • 登录之后服务端会给我们设置cookie的值,那么我们在登录admin的时候修改cookie即可

  • 标题: HTTP头伪造
  • 作者: D0wnBe@t
  • 创建于 : 2024-11-09 13:25:13
  • 更新于 : 2024-11-09 14:46:53
  • 链接: http://downbeat.top/2024/11/09/HTTP头伪造/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论