登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
园子
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
萌新通过[网鼎杯 2020 朱雀组]phpweb对php反序列化的进 ...
萌新通过[网鼎杯 2020 朱雀组]phpweb对php反序列化的进一步了解
[ 复制链接 ]
狭宁
6 天前
作为一个学习ctf时间不长的萌新,之前所做的反序列化题目都是一知半解,只知道这种题目都是一堆class,找eval当链尾,然后组成pop链最后有个执行unserialize的地方,这种题才是php反序列化题目。本题作为一个简单的变式,对我对反序列化的理解有很大的帮助。
首先题目是一个不停刷新的页面,buu靶场没法dirsearch扫只能抓包看看有什么信息,发现post传了两个参数,func=data&p=Y-m-d h:i:s a,这里就可以猜测func是调用的函数名,p是函数的参数,传func=system&p=ls /回显hacker,显然是被过滤了,改变参数仍然回显hacker,那么过滤的就应该是函数名。我们利用文件读取函数来读源文件源码
func=readfile&p=index.php
成功读到源码
[/code][align=center]
[/align]
简单进行代码审计,发现gettime函数就是一个执行命令的函数,要给call_user_func函数传func和p参数,func就是要用的函数名,p是参数。然后一个test类里面有gettime函数,两个传参,两个判断后执行gettime
首先只利用最后两个判断执行命令肯定是行不通的,因为黑名单几乎把所有能用的执行命令的函数全部过滤了。所以这里就要用到反序列化,在最后两个判断中利用第二个gettime函数来unserialize即可。
[code]
复制代码
传入
func=unserialize&p=O:4:"Test":2:{s:1:"p";s:4:"ls /";s:4:"func";s:6:"system";}
复制代码
成功执行system('ls /');
而根目录没有flag文件,环境变量中也没有找到,可以用find命令来找名字中带有flag的文件
system("find / -name *flag*")
复制代码
找到其中最可疑的一个,cat打开拿到flag
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
如何优雅上线、下线?原来 大厂应用 是这样 优雅发布的!
在 .NET 中将 EF Core 升级到 9.0.5 MySQL 连接提示 get_LockReleaseBehavior
开源情报中批判性思维因人工智能而逐渐衰落
sshd服务
AppFreeze与资源泄漏能力开放及常见问题定位方法介绍
人工智能将如何影响语言的演变?
HarmonyOS 5.0 分布式数据协同与跨设备同步
【UAP】使用 .NET Core App 编写 UAP
微软又退出中国。。。
Datawhale速通百炼RAG应用-Task1
不是哥们,26 岁程序员,去种头发了?
【一步步开发AI运动APP】一、写在最前
记录---前端图像五兄弟:网络 URL、Base64、Blob、ArrayBuffer、本地路径,全整明白!
在Ubuntu中部署.NET 8 Minimal WebAPI项目
MOSN(Modular Open Smart Network)是一款主要使用 Go 语言开发的云原生网络代理平台
JavaScript基础
康谋分享 | 自动驾驶仿真进入“标准时代”:aiSim全面对接ASAM OpenX
并发编程--下篇
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
狭宁
6 天前
关注
0
粉丝关注
9
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9994
谭皎洁
9998
斜素欣
9996
4
喝岖
9996
5
森萌黠
9996
6
堵赫然
9996
7
凶契帽
9996
8
季卓然
9996
9
柴古香
9996
10
玲液
9996
查看更多