利用pearcmd.php文件包含拿shell(LFI)
前言最近看博客的时候遇到有师傅总结了一个新颖的文件包含思路,通过pearcmd.php来进行本地文件包含来拿shell,我感觉还挺有意思的,就花时间来学习了一下。
利用条件1.安装了pear扩展(pear就是一个php扩展及应用的代码仓库,没有安装pear扩展的话就没有pear.php文件可以利用了)
2.知道pearcmd.php文件的路径(默认路径是/usr/local/lib/php/pearcmd.php)
3.开启了register_argc_argv选项(只有开启了,$_SERVER[‘argv’]才会生效。)
4.有包含点,并且能包含php后缀的文件,而且没有open_basedir的限制。
复现环境搭建这次用docker来搭建一个lamp,因为docker的任意版本的镜像都会默认安装pear,更加省事。本次复现下载的是这样版本的镜像。
然后就是拉镜像搭建环境了。我们进入到容器里,在web目录下创建两个文件,创建一个1.php,也就是我们的一个漏洞包含点。
<?php include($_GET['fi ...
初探flask debug生成pin码
基础知识当python的web应用没有关闭debug模式,相当于给攻击者留下后门,比如说通过报错信息返回部分源码可供代码审计,有时也会返回当前py文件的绝对路径,另外,如果我们进入到debug调试页面,就可以拿到python的交互式shell,执行任意代码。(下文例子有充分体验)然而我们要进入调试页面,需要输入pin码。什么是pin码
pin是Werkzeug提供的安全措施,另外加的一层保障,不知道pin码是无法进入调试器的。(Werkzeug简单来说就是一个工具包,flask框架就是Werkzeug为底层库开发的)pin码是满足一定的生成算法,所以才有研究的必要,无论重复启动多少次程序,生成的pin码是不变的,但是Werkzeug和python版本的不同会影响pin码的生成。探究pin码的生成方法
由于自身python代码审计能力欠缺,本文侧重点不在于探究Pin码生成算法的底层原理,而是在面对求pin码的ctf题目中能够有思路解决。
开启一个简单的flask程序。
from flask import Flaskapp = Flask(__name__) @app.route(&quo ...
python反序列化分析
前言本次学习是在有php反序列化基础上的,所以基础的什么是序列化和反序列化不必再说。与php反序列化类似,就是将程序运行的对象实例转换为字符串储存起来,在后续需要使用的时候就恢复原来的状态。当然,在python语言里也有类似于serialize和unserialize这样的函数,他们分别为序列化函数pickle.dumps和反序列化函数pickle.loads函数。
pickle.dumps将对象反序列化为字符串pickle.dump将反序列化后的字符串存储为文件pickle.loads() #对象反序列化pickle.load() #对象反序列化,从文件中读取数据
python2和python3序列化出来的字符串是不一样的,python3添加了不可见字符。在这里就以python3环境为例,那就先举一个例子。
import pickleclass test(): def __init__(self): self.name = 'Xiao' self.age = '18' a = test()print(pick ...
thinkphp5.1.37反序列化链子分析
前言这几天一直在搞一个thinkphp框架的一个反序列化漏洞,tp框架的链子很长,用到的函数也很多,思维也比较跳跃,在此用比较通俗易懂的语言分析反序列化链子的构造以及复现。以便自己日后复习,也希望能帮助到小师傅们。(大佬轻点喷)
环境搭建这个tp5.1.37的源码可以在github上下载,也可以用composer来下载,个人推荐第二种,很方便,在github上需要下载两部分,网址分别为:
https://github.com/top-think/framework/releases/tag/v5.1.37
https://github.com/top-think/think/releases/tag/v5.1.37
这两部分下载完成后放到本机上的www目录(用过小皮都懂)把第一个下载的文件夹改名为thinkphp并且放在第二个下载的文件夹里就ok了。本地访问成功。
原本下载的源码是没有反序列化入口的, 我们需要自己来写一个入口。那肯定是要在控制器里去改,你也可以自己写个控制器,我就在\application\index\controller里的index.php里添加代码:
pub ...
博客说明
由原博客 https://blog.csdn.net/m0_62422842
迁移过来。只转移了部分文章,因为太过麻烦。以后会在此博客记录自己的学习经历。菜鸟一枚,欢迎师傅们来访
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post$ hexo new "My New Post"
More info: Writing
Run server$ hexo server
More info: Server
Generate static files$ hexo generate
More info: Generating
Deploy to remote sites$ hexo deploy
More info: Deployment