首页 > 编程语言 >PHP常用的无参函数绕过

PHP常用的无参函数绕过

时间:2024-03-26 22:22:22浏览次数:20  
标签:无参 函数 dump session var 绕过 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()

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

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

具体使用参考菜鸟教程

标签:无参,函数,dump,session,var,绕过,PHP,目录
From: https://www.cnblogs.com/follycat/p/18097776

相关文章

  • php反序列化魔术方法
    目录系列文章1、php面向对象基本概念、类与对象:http://t.csdnimg.cn/5fRcg2、序列化与反序列化基础:http://t.csdnimg.cn/cZOZv一、魔术方法二、__construct()和__destruct()1、__construct() 2、__destruct()三、__sleep()和__weakup()1、__sleep()2、__wakeup()......
  • 使用PHP语言, 如何 只需一步调用,创建支付宝代扣
    使用php语言,如何只需一步调用,创建支付宝代扣  目标原理"#alilite_php"<?phprequire_once'GatewaySdk.php';$appId="999999";//AppID向客户经理申请$sdk=newGatewaySdk($appId);$payload=['timestamp'=>1711347......
  • 【lnmp一键安装】--php环境
    1.官网:lnmp.org 一、一键安装wgethttps://soft.lnmp.com/lnmp/lnmp2.0.tar.gz-Olnmp2.0.tar.gz&&tarzxflnmp2.0.tar.gz&&cdlnmp2.0&&./install.sh lnmp 二、若是已经安装过,如何新增PHP版本呢?1.执行命令:wgethttps://soft.lnmp.com/lnmp/lnmp2.0.tar.gz-Ol......
  • thinkphp导出word【 直接生成word文件 】
    PHPWord中文文档  使用composer安装PHPword:composerrequirephpoffice/phpword直接生成word文件:publicfunctiontest(){$phpWord=new\PhpOffice\PhpWord\PhpWord();//设置默认样式$phpWord->setDefaultFontName('宋体');//字体......
  • 2024西湖论剑-phpems-代码审计
    前言2024西湖论剑数据安全题,太菜了当时没看明白,系统是phpems,修改了默认密码,需要利用CVE登上去CVE-2023-6654,菜鸟学习,大佬多指点0x01环境搭建https://phpems.net/index.php 源码config.inc.php修改相应数据库配置数据库运行pe9.sql文件建立数据库0x02代码审计根据题目......
  • thinkphp添加request()->only(['user_id'=>0]);
    某些版本的thinkphp没有request()->only(['user_id'=>0]);只需要项目目录下的thinkphp/library/think/Request.php文件;找到only方法,重新改写为即可publicfunctiononly($name,$type='param'){$param=self::$type();if(is_strin......
  • day1:PHP语言基础、变量和常量
    一、PHP语言基础一种创建动态交互性站点的、强有力的服务器端脚本语言。1.PHP文件格式一个完整的PHP文件由HTML标记、PHP标记、PHP代码、注释和空格等元素构成。<Html><head><title>HelloWorld!</title></head><body><?php //输出Hello,World echo"Hello,World";......
  • PHP基础面试题大全(附带详细答案)
    1,require()和include区别?include:如果文件不存在,导致致命错误,脚本停止;每次都要进行读取评估。require:如果文件不存在,导致一个警告,脚本继续;只处理多次。2,isset()和empty()区别?isset:变量等于null或者没有初始化,返回false,否则返回true。empty:变量未设置,或者等于0,null,空字符串......
  • PHP高级面试题大全(附带详细答案)
    1,zval详解(php5时期的)/*这个是zval的实际结构,zval就是php中定义变量的容器,你申请一个变量就是创建一个zval对于数组,数组本身是一个zval,数组中的每个值也是一个zval*value;是值或者是地址,内容是值还是地址,要看type的值是什么*refcount__gc;计数,用于垃圾回收,......
  • PHP代码审计
    杂phps,可能可查看该php文件源码index.php.bak:index.php文件备份名php7.1+:类型不敏感,反序列化public属性可以直接赋给private_GET$_GET看成一个键值对数组(关联数组)$_GET==array(‘id’=>1,‘name’=>‘xiao’)函数引用&可以修改_GET....的值,不能修改_Request的值在url传......