------已搬运-------BUUCTF:LCTFbestphp‘s revenge

我弄这个题一整天了,晚上不出意外的话还得看,先这样吧。。里面还有很多疑问点,希望能有大佬指点要用到的很多很多的知识点,,,sesion反序列化–>soap(ssrf+crlf)–>call_user_func激活soap类(抄袭的,我哪能总结出来啊,,,)call_user_func函数这个我自己总结的,看看自己写的extractextract()函数,从数组中把变量导入当前页面,相同的变量会被覆盖。所以下面的b=extract,同时$POST是一个数组,所以符合reset(
摘要由CSDN通过智能技术生成

这个SoupClient中加不加user-agent会不一样的。。。原因是什么,还不清楚
网上所有的wp都没把这点讲清楚,,,我就说,就离谱。明明session反序列化之后出了SoupClient类了,他们非要再传一个name=SoupClient进去。这个是不加user-agent的情况
加了user-agent就不用再传一次name=SoupClient了

要用到的很多很多的知识点,,,

sesion反序列化–>soap(ssrf+crlf)–>call_user_func激活soap类(抄袭的,我哪能总结出来啊,,,)

call_user_func函数

这个我自己总结的,看看
自己写的

extract

extract()函数,从数组中把变量导入当前页面,相同的变量会被覆盖。
所以下面的b=extract,同时$POST是一个数组,所以符合

reset()

会把数组中的第一个元素打印出来

implode()函数

把数组元素连在一起。这个题目,可怜的b一直被覆盖,所以没用上这个
在这里插入图片描述

Cookie和session之间的关系

这个还没有 仔细再查一遍,
之前看过,在加上班长讲的一下,也差不多把。

cookie是在本地的。
session是在服务端的。你来的时候,就看你的session。来决定给你看什么东西,所以这里我改了一下session,就对不上我之前的session了,所以看到的不一样了

CRLF&&HRS

自己写的

Soap类Soup Client

这个没看,从几道CTF题看SOAP安全问题

ini_set和session_start的细微差别

正常的化,比如我们在入门PHP的session反序列化的时候,改变php引擎的方法是ini_set()函数,但是这个函数不接受数组,call_user_func($_GET['f'], $_POST);而这里的post超级全局变量是一个数组,所以ini_set就不行了,于是使用session_start来代替,同时呢session.serialize_handler = php_serialize也变成了serialize_handler=php_serialize

PHP原生类的利用

首先,php反序列化没有可以利用的类的时候,可以调用php原生类,
参考反序列化之PHP原生类的利用这是大佬写的。
我自己也想总结一个,一会儿后总结:

思路

  1. 利用回调函数覆盖session序列化引擎为php_serialize,构造SSRF的Soap类的序列化字符串配合序列化注入session文件。

当我们往外取的时候,会产生反序列化的注入。

  1. 利用反序列化注入的SoapClient类中的为存在的方法,从而调用__call()实现SSRF访问flag.php。这需要b是一个执行函数,也就是b应该是call_user_func。但暂时b=implode。所以要利用call_user_func($_GET['f'], $_POST)f=extract , $_POSTb=call_user_func 。然后$_POST会自动把这个变成数组形式call_user_func(extract,array(b=>call_user_func))。从而将b变量覆盖成了call_user_func了。此时call_user_func($b, $a)就变成了call_user_func(call_user_func,SoapClient,'welcome_to_the_lctf2018')。执行一个SoapClient中没有的方法,调用SoapClient中的 __call() 魔术方法,实现127.0.0.1访问flag.php。从而将flag写入该Cookie下的session中。
  2. 利用他第二步放回的sesion。替换一下session值,再一次访问,就能够显现出
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值