SUCTF 2019 WriteUp

Web

Misc

签到题

给了一串编码,制作:


打开网页就可以得到flag

game

查看源代码得到:

SUCTF 2019 WriteUp_第1张图片

base32解密是一个假的 flag

SUCTF 2019 WriteUp_第2张图片

/js/three.min.js里可以找到一个图片:iZwz9i9xnerwj6o7h40eauZ.png

SUCTF 2019 WriteUp_第3张图片

在图片的lsb隐写里可以发现信息:U2FsdGVkX1+zHjSBeYPtWQVSwXzcVFZLu6Qm0To/KeuHg8vKAxFrVQ==

SUCTF 2019 WriteUp_第4张图片

3DES的加密密文,找个在线网站解密即可得到flag,密钥是之前假的flag

SUCTF 2019 WriteUp_第5张图片

protocol

使用binwalk分析下流量包,可以看到很多png图片:

SUCTF 2019 WriteUp_第6张图片

foremost命令分解得到一大堆图片:

SUCTF 2019 WriteUp_第7张图片

重新审计流量包,发现传输每张图片的流量的数据部分第3个字节有一定的变化规律,遂将该字节相同的空白图片与字符图片一一对应,即得flag

Web

checkIn

一个上传点:


SUCTF 2019 WriteUp_第8张图片

限制了上传php,还不允许出现,还判断上传的文件头。
过滤了.htaccess,这里需要用到.user.ini来构造PHP后门。
构造去包含1.gif

SUCTF 2019 WriteUp_第9张图片

再上传1.gif

SUCTF 2019 WriteUp_第10张图片

访问/uploads/9c1534b1e8dbb5a0c0ec3f70d24f9627/
成功被执行:

SUCTF 2019 WriteUp_第11张图片

获得flag

SUCTF 2019 WriteUp_第12张图片

SUCTF 2019 WriteUp_第13张图片

easy_sql

SUCTF 2019 WriteUp_第14张图片

有个非预期解,存在.index.php.swp

$v){
        if(!empty($v)&&is_string($v)){
            $post[$k] = trim(addslashes($v));
        }
    }
    foreach ($_GET as $k=>$v){
        }
    }
    //die();
    ?>







 Give me your flag, I will tell you if the flag is right. 
40){ die("Too long."); } $sql = "select ".$post['query']."||flag from Flag"; mysqli_multi_query($MysqlLink,$sql); do{ if($res = mysqli_store_result($MysqlLink)){ while($row = mysqli_fetch_row($res)){ print_r($row); } } }while(@mysqli_next_result($MysqlLink)); } ?>

可以看到有个管道符限制,非预期为:


预期解涉及到了MYSQL一种管道符模式。
可以在MYSQL中开启支持管道符来进行字符串的拼接操作:

> set sql_mode=pipes_as_concat;

如下:
先在数据库准备一些测试数据:


SUCTF 2019 WriteUp_第15张图片

尝试添加||,只是当作操作符。

SUCTF 2019 WriteUp_第16张图片

如果开启模式后,可以看下效果:

SUCTF 2019 WriteUp_第17张图片

可以看到把id里的内容也给输出出来了。

看一下最终查询的语句:

$sql = "select ".$post['query']."||flag from Flag";

构造payload1;set sql_mode=pipes_as_concat;select 1

SUCTF 2019 WriteUp_第18张图片

非预期也比较好理解:


SUCTF 2019 WriteUp_第19张图片

Upload labs 2

你可能感兴趣的:(SUCTF 2019 WriteUp)