首页 > 编程语言 >[极客大挑战 2019]PHP

[极客大挑战 2019]PHP

时间:2024-07-30 17:52:38浏览次数:7  
标签:00Name% 极客 14 flag PHP 2019 wakeup 序列化 函数

[极客大挑战 2019]PHP

首先,进入网址,发现有一个非常有趣的动态画面,你可以用毛线球逗小猫玩,小猫也会与你互动,真不错! 咳咳,返回正题,上面提示一段文字,说他有网站备份的习惯,查看网页源码什么信息都没有,应该是把关键文件放到别的路径了。去尝试一下看看,这里有一些常用的网站备份路径:

常用后缀:

tar.gz,zip,rar,tar

常用文件名:

web,website,backup,back,www,wwwroot,temp

我们一个个尝试一下,发现当我们使用www.zip时,下载了一个文件

打开看看有一个flag.php,打开看看,发现一串flag形式的代码,拿去试试,果然不行,没这么简单。

我们继续查看其他文件,其中index.php,文件里有一串代码

image-20240730172140778

这段代码提示是get传参,且对参数进行了反序列化操作,这里我们猜测要使用到反序列化漏洞,

紧接着查看class.php,里面有对这个类的定义如下:

image-20240730172408601

这个代码说只有在username===admin时我们才能得到flag,这是一个强相等的比较。

这里涉及到一个知识点,当我们调用反序列化操作时,会先检查有没有__wakeup函数,如果有会执行这个函数,而题目的代码中的函数会将username设为guest,这样我们后面的比较就不会成功,就得不到flag,所以我们要想办法绕过这个函数。

这里就涉及到如何绕过wakeup函数这个知识点,这里简单介绍一下:

一般反序列化函数内的参数形式为:

O:4:"xctf":1:{s:4:"flag";s:3:"111";}

这里O:表示这是一个对象,即object首字母缩写,还有很多这里只介绍O

4表示后面xctf的长度,xctf是对象名,1表示这个对象只有一个属性。

里面的s是string的缩写,4一样表示字符串长度,flag是属性名字,后面的111是属性值,

绕过wakeup的关键在于上面的1所在位置,它表示括号内属性个数

只要他大于大括号内里属性的个数就可以不执行wakeup

那么我们可以构造payload:

O:4:"Name":3{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

这里面的%00是一种反序列化参数格式,有需要请自行了解,这里不在阐述,在url栏输入:

select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

即得到flag{fa503083-ee86-4031-8af9-108925d3843e}

标签:00Name%,极客,14,flag,PHP,2019,wakeup,序列化,函数
From: https://www.cnblogs.com/wzffzw/p/18333031

相关文章

  • [EIS 2019]EzPOP 代码审计 死亡绕过
    点击查看代码<?phperror_reporting(0);classA{protected$store;protected$key;protected$expire;publicfunction__construct($store,$key='flysystem',$expire=null){$this->key=$key;$this->sto......
  • [RoarCTF 2019]Easy Java
    [RoarCTF2019]EasyJavaStep1点击help按钮后发现:URL变成:url/Download?filename=help.docx而回显:java.io.FileNotFoundException:{help.docx}而当我尝试尝试POST,发现文件成功下载:Step2发现可能的漏洞点后,结合WEB-INF相关知识(见文末)可以下载WEB-INF/web.xmlPOST参数......
  • C++ - VS2019配置pthread线程库
    1.说明在VS里用MS编译器不能直接调用pthread库,需要先自行下载该库:http://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.zip解压后用得到的只有Pre-built.2文件夹下的文件。2.配置如下图分别配置三大项:包含目录-->...pthreads-w32-2-9-1-release\Pre-bu......
  • PHP单例模式详解及应用
    本文由ChatMoney团队出品在PHP开发中,我们经常会遇到一些对象需要在整个应用程序中共享的情况。例如,数据库连接、缓存等资源。这时候,我们可以使用单例模式来确保这些资源只被创建一次,并且在程序的任何地方都可以访问到。什么是单例模式?单例模式(SingletonPattern)是一种设计模......
  • PHP $_POST 变量
    PHP中的 $_POST 变量是另一个超全局变量,它用于收集通过HTTPPOST方法发送的表单数据。与 $_GET 变量不同,$_POST 变量收集的数据不会显示在URL中,这使得它成为处理敏感信息(如密码、个人信息等)的首选方法。基本用法假设你有一个HTML表单,如下所示:<formaction="subm......
  • BUUCTF GWCTF2019 re3
    挺有意思的一题,记录一下主要思路为smc解密+AES算法扔进ida后找到主函数:发现函数地址异或,推测为smc,先按d转化为数据,然后直接使用python脚本解密:fromida_bytesimport*ea=0x402219foriinrange(0,224):patch_bytes(ea+i,bytes(ea+i)^0x99)选中按p生成......
  • 强化PHP安全策略,有效防范网络钓鱼威胁
    本文由ChatMoney团队出品随着互联网的飞速发展,网络钓鱼攻击已成为网络安全领域的重要威胁之一。网络钓鱼攻击通过伪装成合法网站或企业,诱骗用户进入虚假网站并窃取用户的个人信息、密码等敏感信息。对于使用PHP框架开发的Web应用来说,加强安全防护、防止网络钓鱼攻击显得尤为重......
  • PHP安全防护抵御网络钓鱼攻击
    本文由ChatMoney团队出品随着互联网的飞速发展,网络钓鱼攻击已成为网络安全领域的重要威胁之一。网络钓鱼攻击通过伪装成合法网站或企业,诱骗用户进入虚假网站并窃取用户的个人信息、密码等敏感信息。对于使用PHP框架开发的Web应用来说,加强安全防护、防止网络钓鱼攻击显得尤为重......
  • 如何进行PHP性能优化?
    PHP性能优化是一个复杂且多方面的过程,涉及从代码层面到服务器配置的多个方面。以下是一些关键的优化技巧和最佳实践:选择合适的数据结构(如数组、对象等)可以显著提高程序的运行效率。缓存是提升PHP性能的有效手段之一。可以通过页面缓存、数据缓存、内存缓存等方式来减少重复计......
  • Solution - Atcoder YPC2019E Odd Subrectangles
    首先对于\(0/1\)和为奇数,转化为异或为\(1\)来考虑。考虑如果已经确定了行的选取,又该如何计数。考虑对于每一列,都处理好在对应行的位置的异或值。然后记\(\operatorname{c}_0,\operatorname{c}_1\)表示列异或值为\(0/1\)的数量。知道了\(\operatorname{c}_0,\op......