云尘 命令执行系列

第一题 system

<?php
include "flag.php";

if (isset($_POST['cmd'])) {
    system($_POST['cmd']);
}

show_source(__FILE__);

代码如上

system($_POST['cmd']);

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

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

得到flag

第二题 assert

代码如下

<?php
include "flag.php";

//assert("phpinfo()");

if (isset($_POST['cmd'])) {
    $a = $_POST['cmd'];

    assert($a);

}

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

<?php
include "flag.php";

if (isset ($_POST['cmd'])) {
    eval($_POST['cmd']);
    
}

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

相关推荐
罗曼蒂克在消亡1 分钟前
2.3MyBatis——插件机制
java·mybatis·源码学习
_GR13 分钟前
每日OJ题_牛客_牛牛冲钻五_模拟_C++_Java
java·数据结构·c++·算法·动态规划
zqx_716 分钟前
随记 前端框架React的初步认识
前端·react.js·前端框架
无限大.26 分钟前
c语言200例 067
java·c语言·开发语言
余炜yw28 分钟前
【Java序列化器】Java 中常用序列化器的探索与实践
java·开发语言
攸攸太上28 分钟前
JMeter学习
java·后端·学习·jmeter·微服务
Kenny.志31 分钟前
2、Spring Boot 3.x 集成 Feign
java·spring boot·后端
惜.己33 分钟前
javaScript基础(8个案例+代码+效果图)
开发语言·前端·javascript·vscode·css3·html5
不修×蝙蝠33 分钟前
八大排序--01冒泡排序
java
sky丶Mamba1 小时前
Spring Boot中获取application.yml中属性的几种方式
java·spring boot·后端