CTFshow之RCE代码命令远程执行第49关详细讲解。可私信!

棺材里伸手,死要钱!

          --古吉拉特邦 莫迪大仙

引言:由于有些题目实在是让人抓挠,我看完题解后难以接受知识机械的执行获取flag,所以我想着尽可能用我的语言去进行解释!

由于是验证猜想实验,所以我不会注重于得到flag。如果想知道解题思路移步至下述文章:

一、实验准备

1、phpstudy

2、firefox浏览器

3、hackbar插件

(如果大家有需要上述工具可私信)

二、实验原因

1、产生原因:

由于在实验中过滤了字符%,但是我们的payload中依旧使用了?c=tac%09fla?.php||,那么%09是否在传入参数后自己转码成了Tab键?

三、实验过程

1、在本地创建rce.php文件,将题目拷贝至其中

2、添加输出验证语句

如果验证成功则输出:成功过滤!

 <?php
//设置编码方式为utf-8
header("Content-Type:text/html;charset=utf-8");
if(isset($_GET['c'])){
    $c=$_GET['c'];
    echo $c;//输出变量$c接受到的值,再进行过滤前进行输出
	echo "<br>";//美观输出换行
    if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%/i", $c)){
		echo "成功过滤!!";//如果成功过滤则输出过滤成功
        system($c." >/dev/null 2>&1");
    }
}else{
    highlight_file(__FILE__);
} 
?>

3、访问地址

payload:

http://localhost/rce.php?c=tac%09fla?.txt||

查看结果,第一次输出$c的值发现%09没有被接受而是自动转换成了Tab键,所以可以通过后续验证进行绕过,但是还是会有人会有疑惑,那不是直接变成空格了吗?Tab的输出确像空格键但是还是存在差别

至此验证完成,欢迎不同的讨论声音!

相关推荐

  1. RCE远程命令执行)漏洞详解

    2024-06-17 21:34:04       39 阅读
  2. ctfshow-命令执行

    2024-06-17 21:34:04       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-17 21:34:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-17 21:34:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-17 21:34:04       82 阅读
  4. Python语言-面向对象

    2024-06-17 21:34:04       91 阅读

热门阅读

  1. 一千题,No.0077(计算谱半径)

    2024-06-17 21:34:04       36 阅读
  2. 因果卷积和递归神经网络

    2024-06-17 21:34:04       33 阅读
  3. 【机器学习】基于顺序到顺序Transformer机器翻译

    2024-06-17 21:34:04       31 阅读
  4. PHP 命名空间

    2024-06-17 21:34:04       31 阅读
  5. vscode调试cmake生成的可执行文件

    2024-06-17 21:34:04       38 阅读