0
点赞
收藏
分享

微信扫一扫

CTFSHOW WEB142 摸鱼

分类:[技术分析]

标签CTF SHOW 刷题 新手

阅读时长:约 [2] 分钟

引言(前言)

日常CTF 做题记录,日常做题分享,希望能积累更多的知识!!!

CTFSHOW WEB142

1.1 题目及分析

highlight_file(__FILE__);
if(isset($_GET['v1'])){
    $v1 = (String)$_GET['v1'];
    if(is_numeric($v1)){
        $d = (int)($v1 * 0x36d * 0x36d * 0x36d * 0x36d * 0x36d);
        sleep($d);
        echo file_get_contents("flag.php");
    }
}

  • 题目分析
  • 此题主要是代码审计,完全没有难度,所以算是摸鱼
1.2 思路

这段PHP代码的主要功能是根据GET参数v1的取值来决定是否输出flag.php的内容,具体分析如下:

代码逻辑拆解

  1. highlight_file(__FILE__); 作用是在页面上显示当前PHP文件的源代码,通常用于调试或展示代码本身。
  2. 核心逻辑:
  • 检查是否存在GET参数v1(即通过URL传入的?v1=xxx)。
  • v1转换为字符串后,用is_numeric()判断其是否为数字(或数字字符串)。
  • v1是数字,计算$d的值:(int)($v1 * 0x36d^5)0x36d是十六进制,对应十进制877,即877的5次方)。
  • 执行sleep($d):程序暂停$d秒。
  • 暂停结束后,输出flag.php的内容(通过file_get_contents("flag.php"))。

关键问题与利用方式

0x36d^5(877的5次方)是一个极大的数(约5.19×10¹⁴)。如果v1是正数,$d会非常大,导致sleep($d)的等待时间极长(例如v1=0.000000000001时,$d≈519,需要等待8分钟以上),几乎无法实际获取flag.php的内容。 当v1=0时,$v1 * 0x36d^5 = 0,因此$d=0,此时sleep(0)几乎不等待,程序会立即输出flag.php的内容。

利用方法

通过URL传入v1=0即可绕过漫长的等待,直接获取flag,例如访问:
http://目标地址/文件名.php?v1=0

1.3 结果

大家多多尝试一下有没有更好的方法吧!

互动环节

  • 各位大佬们是否有更优的实现方式?欢迎分享代码
  • 评论区聊聊吧~
举报

相关推荐

CTFSHOW~WEB入门

CTFshow WEB web3

CTFSHOW 新生杯web

ctfshow web-77

[ctfshow]-web196

ctfshow web5

ctfshow web29-web40

ctfshow web入门(持续更新

【CTFWP】ctfshow-web42

0 条评论