无境·U Lab_SRC
Charmersix

有个接口隐藏了,找到它

经典斐济杯商城,打开插件扫荡一波image-20260209134629019

没发现有用的,拿工具FUZZ一下

image-20260209134727383

发现swagger UI,挨个api访问一下,发现没有东西,但是前面我们扫出来了一个admin,可以拼接一下试试

1
/api/admin/get_verification_status.php

image-20260209135233001

真实报告复现之sql注入

image-20260209142956438

抓个包瞅瞅,废话少说,直接上工具

1
ghauri -r .\post.txt -D srcsql1 -T admin_users --dump --batch

ghauri比sqlmap好用,但是比较慢。

image-20260209143047560

简单逻辑漏洞之任意用户登录

打开登录界面,先收集一下关键信息image-20260209153409222

其中mhtvip用户可以直接登录,但是是普通用户,大致跟踪一下登录过程

image-20260209153517771

出现手机号,前期发现管理员手机号(当然也是因为我各种尝试admin用户名都失败了

尝试用管理员手机号登录,成功

image-20260209145334314

简单-任意用户登录二

403bypass失败,扫描发现login.html直接登录发现需要收验证码,但是返回包居然直接有验证码image-20260209155223691

直接登录,发现这个号被封禁,上过班的homie都知道,公司统一的手机卡,只有后四位是不一样的,那么我们可以爆破一下后四位

image-20260209155549385

有几个success,试一下,先改一下密码,改成123456,直接登录即可

image-20260209155917417

简单越权漏洞之ID越权

目的是越权到棉花糖的账号,flag在他的订单信息里,我们先注册一个看看订单在什么位置image-20260211184323106

发现订单位置,在个人中心,抓包看一下image-20260211184410619

OK,这个openid看起来很像用户ID,不如我们再注册一个用户看看,新注册是126

image-20260211184539527

那么我们遍历一下棉花糖的ID是什么呢,搜索一下flag,成功image-20260211184607334

JS不能分析数据又加密,咋整

抓个档案包瞅一下,加密过了,解密看一下image-20260211203135746

直接魔术棒就能解image-20260211203211743

OK,然后try一下棉花糖ID,是1,拿到flag

image-20260211203318911

简单支付漏洞之金额修改

抓取购买包,随便填,金额直接改成一块,购买成功

image-20260211203904337

简单支付漏洞之订单编号

从创建订单开始,就发现有数量,我们看看改成-1试试,订单创建成功,说明有机会,

image-20260211214159506

直接购买成功image-20260211214354536

简单支付漏洞之整数溢出

一般在开发当中,商品的金额都会用int 型来定义,那么 int 的最大值为2147483647,可以尝试修改为2147483648。看是否造成整数溢出,有可能支付状态异常,从而导致支付成功。

溢出就是一个简单的循环,-2147483648到2147483647。

为了更直观理解,此题中设计的情况就是溢出循环,实战中更有可能是状态异常直接成功.

目标商品单价为2400元,那么简单计算,当商品数量为894785时,超过了2147483647,提交订单可以看到报错:

image-20260211215703439

猜测可能是由于金额为负数无法正确走到支付流程,我们的余额有1000,意味着我们要把最终订单金额溢出回正的1000元以内,经过计算,数量应该为:1789570,这里为了方便计算整了个小脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import sys

def calculate_overflow():
print("="*30)
print(" 支付金额溢出计算工具 (32-bit Signed)")
print("="*30)

# 32位有符号整数的范围
MOD = 2**32 # 4294967296
INT_MAX = 2**31 - 1
INT_MIN = -2**31

print(f"提示:32位int最大值为 {INT_MAX}")
print("1. 逆推:通过目标金额(如50)计算需要输入的超大原始数")
print("2. 模拟:输入一个超大的数,查看溢出后的真实数值")

choice = input("\n请选择功能 (1/2): ")

if choice == '1':
target = int(input("请输入你希望溢出后的目标值 (例如 50): "))
# 原理:目标值 + 2^32
raw_input = target + MOD
print(f"\n[结果] 若后端强转32位int,你应该输入: {raw_input}")
print(f"验证: (int){raw_input} -> {target}")

elif choice == '2':
raw_val = int(input("请输入一个超大的原始数值: "))
# 模拟 32位有符号整数溢出逻辑
# 先取模得到 0 到 2^32-1 之间的数
wrapped = raw_val % MOD
# 如果超过了 INT_MAX,说明进入了负数区间
if wrapped > INT_MAX:
final_val = wrapped - MOD
else:
final_val = wrapped

print(f"\n[结果] 该数值在32位有符号int中会被识别为: {final_val}")
if final_val <= 0:
print("警告:该数值会导致金额变为负数或零,可能触发逻辑漏洞!")
else:
print("选择无效。")

if __name__ == "__main__":
try:
calculate_overflow()
except ValueError:
print("错误:请输入有效的整数数字。")
except KeyboardInterrupt:
print("\n已退出。")

image-20260310103812934

image-20260211215625968

简单支付漏洞之优惠券数量

直接修改优惠券数量

image-20260211220351729

简单漏洞之组合环境一

根据验证码接收平台,拼接api,拿到隐藏接口,提示缺少page&limit

image-20260212143422747

似乎拿到了VIP账号

image-20260212143606277

试一下能不能登录进去,这里还需要利用接码平台,但是棉花糖说,漏洞不涉及接码平台,莫非这是非预期?

image-20260212144220544

登录成功

image-20260212144233924

直接买FLAG

 Comments