947 字
5 分钟
逻辑漏洞

进入商城按要求购买一件夹克

将夹克添加到购物车时抓包

发现包中包含了商品的价格,尝试修改价格后放包

跳转到购物车支付页面,商品价格更改

再次购买夹克,发现可以将商品数量调到负数,但是回显表示商品价格不能低于 0,既然一个商品负数价格低于 0,考虑两个商品叠加呢

成功购买

发现皮夹克不能为负数,但是其他商品可以

两个商品数量都不能为负数,抓包购买商品,发现最大添加数量为 99,改为 99 并启动爆破

商品的价格随购买数量增大,到一定程度后价格变为负数

调整一下,成功购买

该漏洞属于整数溢出漏洞,服务器后端使用 32 位的 int 类型来处理数据,int 类型最多存储 2^31-1= 2,147,483,647,当超过这个大小会导致溢出,变为-2,147,483,647,在数据量较大时应该使用 64 位的数据类型来保存数据,并做边界检查

5.双因素认证漏洞

首先登陆自己的账号

点击登录后向账户邮箱发送了验证码,抓包验证码界面发现 cookie 中有 verify=wiener,后端可能直接通过 cookie 中的 verify 来验证用户,修改成要攻击的账户

页面发生了 302 跳转,极有可能攻击成功

审视验证流程:用户输入账户密码,服务器向账户邮箱发送验证码,用户填写验证码,成功登录

在发送验证码的过程中,服务器通过 cookie 来校验用户,无加密,可直接篡改,那么修改用户,服务器就会向修改的用户的邮箱发送验证码,如果能拿到验证码同时在报文中修改在用户就能直接登录

抓包账户输入验证码页面修改成攻击用户直接爆破密码

拿到验证码,查看响应,返回了 session

修改 session,cookie,成功登录

题目说有越权的问题,需要登录 administrator 管理员账号,先登录已有账号

发现多了个修改账户密码的功能,同时修改密码时还要填 username,猜测是修改 username 为 administrator 同时修改密码然后登陆

修改 username 后发包发现旧密码错误修改失败,想了半天也不知道怎么绕过,看 wp 才知道直接在包中把 current-passwd 旧密码删掉就好了,还是要多试啊

成功登录管理员!!!

题目提示密码重置功能存在漏洞,首先猜想应该是通过登录已知账号修改密码时抓包改成修改别人的密码

登录账号时选择忘记密码,看到填账户名猜测应该没错

修改用户名为要攻击账户,放包,观察页面发现向账户邮箱发送了验证消息,但是我们没有被攻击账户的邮箱,观察一下自己账户修改密码发送的邮箱

果然在抓包信息中发送了 username 信息,后端应该通过用户名来确认用户,我们直接修改,发包

拿下

先购买一件便宜商品,发现 url 栏中出现order-confirmation?order-confirmed=true 的信息,

购买一件昂贵商品,抓包后修改为上面的格式成功购买

9.题目要求拿到管理员权限,先登录看下

登陆后有个选择身份的选项,开始直接抓包修改角色为 administrator 发现不行,看 wp 直接放包访问/根目录就能越权,这怎么想到的

逻辑漏洞
https://lab404.cn/posts/logic-vulnerabilities/
作者
见山
发布于
2025-10-25
许可协议
CC BY-NC-SA 4.0