87x00

导航

ctf--web刷题记录 ACTF2020back up file 、极客大挑战2019php、secret file

ACTF2020back up file

  • backup file指的是备份文件,一般备份文件的后缀有“.git” 、“.svn”、“ .swp” “.~”、“.bak”、“.bash_history”、“.bkf”

     

    根据题目的hint,随便访问一个index.php.bak,下载得到备份文件

  1. 此处为弱比较,要求just num,所以传入key=123,得到flag

 

 

  • 极客2019php

    dirsearch备份文件爆破

  • php反序列化函数漏洞绕过

  • __sleep() 序列化函数调用时自动执行的函数,可以限定要序列化的属性
    __wakeup()//反序列化时优先调用执行的函数
  • private声明的字段类型

 

  1. 先试了几个备份文件名都没有用,于是用dirsearch爆破,找到www.zip

  1. 访问/www.zip,得到文件,解压,得到index.php flag.php class.php打开flag.php,哈哈被骗辣

  1. 看index.php,调用了class.php,且需要用get方式传递经过反序列化之后的select。

    再看class.php,select需要满足usename=admin&password=100

  2. 查了一圈资料,发现class.php里用到的_wakeup函数在反序列化时会优先执行,覆盖掉之前输入的username和password。解决办法就是写脚本重新构造序列化(脚本是上网找的,我还是太菜了)

<?php
class Name{
private $username = 'nonono';
private $password = 'yesyes';
public function __construct($username,$password){
$this->username = $username;
$this->password = $password;
}
}
$a = new Name('admin', 100);//重新构造序列化
var_dump(serialize($a));
?>

输出的结果

  1. 此处为了绕过_wakeup函数,要把’2‘改成一个大于真实类型数的值,但改了之后上传还是没有反应

  1. 又查了一圈资料,发现是因为private声明的字段前面都有/0前缀,不能直接复制 字段前加上%00后上传成功,得到flag

 

极客2019secret file

  • php://filter伪协议

    1. 先随便访问个flag.php,发现什么都没有

    2. 从头开始,在源码里一步一步找到文件夹,访问,直到action.php的时候出了问题,访问之后立即跳转成end.php了

    3. 抓包,在action.php这里发现有个secr3t.php,访问查看源码,发现让我们传入file

  1. 这里用到php伪协议php://filter,把flag.php的源码通过base64编码之后读取

    ?file传入php://filter/convert.base64-encode/resource=flag.php

  2. 解码,得到源码

  3.  

posted on 2021-12-20 20:30  87x00  阅读(98)  评论(0编辑  收藏  举报