PHP常用的无参函数绕过

PHP常用的无参函数绕过

getallheaders()

这个函数的内容就是获取http所有的头部信息。接着我们可以用var_dump函数来把函数的执行结果都打印出来。这个函数有一个缺陷,它只能在apache中间件环境下使用。我们来在本地测试一下无参函数的具体效果。

测试代码:

<?php
highlight_file(__FILE__);
if(isset($_GET['shell'])){
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['shell'])) {    
    eval($_GET['shell']);}
else
    die('hacker!!!!');}
else
    echo('hahaha');
?>

var_dump(getallheaders());语句传入进去。

end()

在php中end()函数是取出数组的最后一位。这个end函数是只会取出最后一位的键值,就是以字符串的形式输出出来,所以键名是可以随便起的。

我本地用var_dump输出getallheaders()函数的内容是倒着输的,(具体原因不清楚)所以使用end函数就截取了第一行的内容localhost。 其实原理是一样的。我们可以在http报文后加上我们要执行的恶意代码,再使用end函数截取最后一行,把var_dump函数换成eval函数就可以达到无参函数执行命令了。

session_id()

这种方法就是把恶意代码写在cookie的session_id里面。然后就用session_id()这个函数来读取它,然后它会返回出一个字符串,再用eval函数执行命令。但是,这种方法的前提是我们要开启session才能用session_id(),也就是说,要先session_start();用var_dump函数输出一下

session_id(session_start()),出来的是字符串,我们不需要做任何转换,但是session字符串只能有大小写字母和字符串。但不包含字符,所以我们在session这个地方注入命令就要做一些转换了,那么我们可以将字符串进行16进制编码后再用php中的hex2bin函数解码,执行恶意命令。

scandir()

列出当前目录的文件和目录,以数组的形式展现出来。

img

chdir()

chdir() 函数改变当前的目录。这个函数是是用来跳目录的,有时我们要读取的文件不在当前目录下,所以我们要改变当前目录。比如用chdir('..')来跳回上一级目录。再配合scandir函数遍历任意目录下的文件。

array_reverse()

根据单词意思就知道这个函数的功能就是将数组倒过来。

highlight_file()

这个函数用来高亮代码,可以相当于文件读取。相当于show_source()。

getcwd()

这个函数返回当前工作目录。成功则返回当前工作目录,失败则返回FALSE。也需要用scandir函数遍历当前工作目录。

dirname()

这个函数返回路径中的目录名称部分。

get_defined_vars()

返回由所有已定义变量所组成的数组。

返回一个包含所有已定义变量列表的多维数组,这些变量包括环境变量、服务器变量和用户定义的变量。

具体使用参考菜鸟教程

posted @ 2024-03-26 22:20  follycat  阅读(16)  评论(0编辑  收藏  举报