渗透笔记和疑惑

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下进行连接时候和老师一样报了错误然后进行重启虚拟机在后面问题大概没有问题但是我一直思考如果不看老师录屏和讲解我该如何思考每一步是为啥。

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

相关推荐
军军君011 小时前
Three.js基础功能学习十:渲染器与辅助对象
开发语言·前端·javascript·学习·3d·前端框架·ecmascript
可儿·四系桜1 小时前
Kafka从入门到精通:分布式消息队列实战指南(Zookeeper 模式)
java·开发语言·zookeeper·kafka
努力d小白2 小时前
leetcode49.字母异位词分组
java·开发语言
Y_cheng_2 小时前
php环境配置与伪协议
开发语言·php
IMPYLH2 小时前
Lua 的 Table 模块
开发语言·笔记·后端·junit·游戏引擎·lua
一个处女座的程序猿O(∩_∩)O2 小时前
深入剖析Java线程生命周期:从创建到销毁的全流程详解
java·开发语言
许同2 小时前
JS-WPS 自动化办公(3)数据整理-找数据
开发语言·javascript·wps
Fairy要carry2 小时前
面试:LLM-分词
开发语言·c#
项目題供诗2 小时前
C语言基础(七)
c语言·开发语言