[TOC]

命令/代码执行漏洞基础概念:

命令执行基础概念:

调用一些函数来执行系统中已存在的命令

image-20210724102117410

代码执行基础概念:

它需要用到一些动态的判断方法去动态的拼接一些内容来进行执行。

image-20210724102329916

漏洞成因

如果它们的命令执行的一些参数是可控的,就可以借此执行想要的内容,

image-20210724103151749

常见命令代码执行函数讲解

PHP中造成命令执行漏洞的常用函数:

system() exec() shell_exec() passthru() 这四个都是直接执行的系统命令

`` 反引号 是PHP中特有的,当函数被禁用时可以直接执行这样一个反引号来进行命令执行。

image-20210724104149985

image-20210724104606634

PHP中造成代码执行漏洞的常用函数:

eval与assert

image-20210724151235098

eval()直接执行PHP代码,特殊之处在于能够利用PHP tags来离开/进入PHP代码运行模式。

image-20210724114936229

这行代码本质上是:

<?php echo 1;?>

其实相当于将eval()括号的内容进行了文件包含。

image-20210724120352685

eval()可以和短标签?>配合使用

image-20210724121157556

image-20210724151033206

调用函数过滤不当

image-20210724152044923

image-20210724152931999

动态函数执行

image-20210724153106450

常见绕过手段

题目中不可能让人直接执行,存在诸多限制,绕过的掌握就很有必要。

open_basedir绕过:

ini_set: 创建一个子目录,然后将open_basedir设置为父级目录,但是是相对目录的,经过多次跳转,父级目录的父级目录,最终到达根目录,再把它设置成根目录就允许访问了。

image-20210724155127895

image-20210724160855179

image-20210724155046367

image-20210724155901729

字符串构造:

异或

image-20210724161639171

自增

image-20210724162122188

取反

$a = "a";
echo urlencode(~"$a");
// %9E
echo urlencode(~"\x9E");
// a

短标签:

利用 来进行执行,默认开启。

Shell特性:

image-20210724162804075

image-20210724163018202

image-20210724163200190

image-20210724163339935

绕过disable_function:

绕过Disable Functions来搞事情

https://www.freebuf.com/articles/network/263540.html

蚁剑中插件市场

image-20210724163757678