渗透笔记和疑惑

1.环境搭建

我java,phpstdudy,vscode之前有

我主要最近搭建了在windows上搭建Xdebug,在虚拟机上搭建nginx,php.fpm1.docker和Vscode远程连接

1.在Windows和虚拟机上nginx和php.fpm按照老师步骤搭建没有问题

2.在虚拟机上刚开始拉docker遇到了问题,一只有错,我就搭建了梯子按照老师第二部走最后也是用了很久完成了

3.vscode远程连接下载两个软件也顺利完成了和老师给容器中搭建也完成

环境搭建中我的问题不是很大和有问题也解决了。

PHP上传文件机制

上传文件时先会把文件上传到临时文件夹下,然后起一个随机别名,再把文件从临时文件夹转移到要上传的文件夹,然后删除这个文件

PHP5.2截断漏洞

  • 当你访问 1.php 时,PHP 解析器执行 include "1.txt\000.jpg"
  • 由于空字符截断漏洞,PHP 只识别到 1.txt,并尝试包含这个文件。
  • 1.txt 被当作 PHP 文件解析,里面的 echo 'fireXXX'; 被执行。

为什么会存在这样的问题,因为upload函数的底层用的是C语言,c语言的结束符为\0

File协议

文件包含第一个特征,可以读取盘符的文件

127.0.0.1/include/2.php?file=C:\Windows\System32\drivers\etc\hosts

file://是用来读文件的,include文件,不管是任何文件,都会被当做php代码执行

PHP://协议

可以接收post传参

把后面的值写到前面的文件中去

接收两个值,一个是文件名,一个是流

php://filter的妙用

php://filter是PHP中独有的协议,利用这个协议可以创造很多"妙用",本文说几个有意思的点,剩下的大家自己下去体会。

0x01 巧用编码与解码

<?php

$content = '<?php exit; ?>';

content .= _POST['txt'];

file_put_contents(_POST\['filename'\], content);

://filter协议来施展魔法:使用php://filter流的base64-decode方法,将$content解码,利用php base64_decode函数特性去除"死亡exit"。

众所周知,base64编码中只包含64个可打印字符,而PHP在解码base64时,遇到不在其中的字符时,将会跳过这些字符,仅将合法字符组成一个新的字符串进行解码。

所以,一个正常的base64_decode实际上可以理解为如下两个步骤:

<?php

_GET\['txt'\] = preg_replace('\|\[\^a-z0-9A-Z+/\]\|s', '', _GET['txt']);

base64_decode($_GET['txt']);

phpexita

所以,当$content被加上了<?php exit; ?>以后,我们可以使用 php://filter/write=convert.base64-decode 来首先对其解码。在解码的过程中,字符<、?、;、>、空格等一共有7个字符不符合base64编码的字符范围将被忽略,所以最终被解码的字符仅有"phpexit"和我们传入的其他字符。

"phpexit"一共7个字符,因为base64算法解码时是4个byte一组,所以给他增加1个"a"一共8个字符。这样,"phpexita"被正常解码,而后面我们传入的webshell的base64内容也被正常解码。结果就是<?php exit; ?>没有了。

这里我知道要用base64进行解析才能得到

这部分内容我记得先将要执行的PHP代码写好文件名为phpcode.txt,将phpcode.txt进行zip压缩,压缩文件名为file.zip,如果可以上传zip文在件便直接上传,若不能便将file.zip重命名为file.jpg后在上传,其他几种压缩格式也可以这样操作在进行解析操作。

这部分是老师也出错了,可能虚拟机问题但是我的php师7.3进行其他测试的时候我感觉可能是后缀问题

远程调试PHP底层复现8.1-dev后门

在这个步骤中ssh -p2222 -i d:/program/private.key root@192.168.192.133下进行连接时候和老师一样报了错误然后进行重启虚拟机在后面问题大概没有问题但是我一直思考如果不看老师录屏和讲解我该如何思考每一步是为啥。

在四天讲的内容老师思路我可以差不多但是就像只能跟着老师做,没有老师完全没有思路,和你讲这步是为啥,啥原因。跳转到那步可能因为经验问题不太会

相关推荐
BingoGo13 分钟前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack14 分钟前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack1 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo1 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack2 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理3 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1233 天前
matlab画图工具
开发语言·matlab
dustcell.3 天前
haproxy七层代理
java·开发语言·前端
norlan_jame3 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone3 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc