青岑CTF-宇宙的中心是PHP
本文最后更新于4 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

启动容器

来到题目,发现只有一个PHP动画,尝试按F12打开开发者选项/查看页面源代码发现不行,使用快捷键CTRL+SHIFT+I

这里提示了这篇黑暗的秘密,在URL栏上输入

来到全新页面,分析代码,经过POST传递过来的数据会经过intval()函数的检查,符合条件就返回flag,不符合条件就输出“你还未参透奥秘”

这里我们首先需要知道php中intval()函数的作用。

PHP中的intval()函数,主要用于获取变量的整数值

格式:

int intval(mixed $value, int $base = 10):int

$value:需要转换的标量值(数字、字符串、布尔值等)

$base:转换所用的进制(可选,默认为10)。仅在$value是字符串时生效。

如果设置为0,则根据字符串前缀自行判断

0x开头识别为16进制

0b开头识别为2进制,

0开头识别为8进制

常见用法及转换

浮点数截断:直接向下舍弃小数部分,不进行四舍五入

intval(4.2);  // 4

intval(4.9);  // 4

intval(-4.9); // -4

字符串转换:从字符串左侧开始解析,直到遇到第一个非有效数字字符停止;若开头不是数字则返回0.

intval(“42”);     // 42

intval(“42abc”);  // 42

intval(“abc42”);  // 0

不同进制转换

intval(“1a”, 16); // 26 (16 进制)

intval(“012”, 8);  // 10 (8 进制)

intval(“0x1a”, 0); // 26 (自动识别为 16 进制)

布尔与特殊值:

intval(true);   // 1

intval(false);  // 0

intval(null);   // 0

intval([]);     // 0 (空数组返回 0,非空数组返回 1)

解题思路:

核心,利用进制特性绕过

先把十进制47转成八进制为:57

在PHP字符串中表示8进制要加上前缀0,即057

由于传递方式使用的是$_POST[‘newstart2025’],所以必须构造POST请求

有以下几种方法

payload构造原理

Intval($answer,0) == 47(base为0时会根据前缀自动识别进制,解析后等于47)

①、使用hackbar构造

选择POST请求方式,URL为题目链接,Body参数默认即可

payload:

newstar2025=057/newstar2025=0x2f

拿到了flag

②、终端curl命令:

curl -X POST -d “newstar2025=057” http://题目URL

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇