广西南宁市2017CTF总结

前言:

  这次CTF游戏体验很差,不得不吐槽下web环境。。算了,毕竟是博客,不适合评论太多。一些基础题我就不发出来了,这里发一些我认为有用的东西。

Basic_100:

给了很多的二进制,更改之前一脸蒙蔽,更改之后比较好做直接二进制转ascii码,在线解密即可:

D E F C O N   2 2   C T F 里 检 测 出 了 两 个 不 同 的 问 题 : “ s h i t s c o ” 和 “ n o n a m e y e t ” 。 感 谢 所 有 的 意 见 和 评 论 , 我 遇 到 的 最 常 见 的 问 题 是 : “ 我 怎 么 才 能 在 C T F s 里 开 始 ? ” 在 不 久 前 我 问 过 自 己 一 样 的 问 题 , 所 以 我 想 要 给 出 些 对 你 追 求 C T F s 的 建 议 和 资 源 。 最 简 单 的 方 法 就 是 注 册 一 个 介 绍 C T F 的 帐 号 , 如 C S A W ,   P i c o   C T F ,     M i c r o c o r r u p t i o n 或 是 其 他 的 。 通 过 实 践 、 耐 心 和 奉 献 精 神 , 你 的 技 能 { r D g a z 0 1 1 z Y g f Q E l Q H D T j 2 l W 7 } 会 随 着 时 间 而 提 高

web_300:

这题绝了!听说上午能跑sqlmap下午不能(我下午手注都卡的要命,三次刷新两次被重置),后面得知出题人自己手写了一个waf,然后跑sqlmap会被禁。。union也被禁!

最后知道做出来的都是用sqlmap跑出来的!多数利用“--random-agent”,使用tamper绕过,都是利用编码方式: space2hash.py  base64encode.py charencode.py这样子是能跑出来flag的。。

出题人给了我们一个手工绕waf的payload:

http://39.108.7.112/show.php?id[]=-1) union/*& id[]=*/ select 1,user(),3/*&id[]=*/from mysql.user  #
http://39.108.7.112/show.php?id[]=-1) union/*& id[]=*/ select 1,user(),flag/*&id[]=*/from gxnnctf2017.flag  #

下面再给出这题的部分源码:

<html>
<head>
<meta charset="utf-8"/>
<title>葫芦兄弟</title>
</head>
<body>

<?php
foreach($_GET as $get){
    if(is_array($get)){
        foreach($get as $g){
            if(stristr($g,'select')!=FALSE && stristr($g,'union')!=FALSE){
                die("stop attack!");
            }elseif(stristr($g,'select')!=FALSE && stristr($g,'from')!=FALSE){
                die("stop attack!");
            }

        }
    }else{
        if(stristr($get,'select')!=FALSE && stristr($get,'union')!=FALSE){
            die("stop attack!");
        }
    }
    
}
 mysql_connect("localhost", "root", "") or
        die("Could not connect: " . mysql_error());
mysql_select_db("test");
$id=$_GET['id'];
mysql_query("SET NAMES 'utf8'");
if(is_array($id))
{
   
    $sql='select * from news where id in('.implode(',',$id).')';
}else{
    $sql='select * from news where id='.$id;
}
echo $sql;
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
        printf ("id: %s</br>  Title: %s</br> %s", $row[0], $row[1],$row[2]);
    }

    mysql_free_result($result);
?>

</body>
</html>

Basic_200

这题就是给了16进制形式的密文,key,向量让解密

https://www.blackhat.com/docs/asia-17/materials/asia-17-Braeken-Hack-Microsoft-Using-Microsoft-Signed-Binaries-wp.pdf

网上搜到这个,照做。

 Misc_300小黑的流量:

通过分析数据包,发现使用了procdump,导出一个包,直接提取出来,保存为.dup文件。

再通过使用mimikatz成功读取密码,密码就是flag。

web-200:

通过http返回头想到是nodejs反序列化漏洞,搜索nodejs漏洞文章,在获取当前目录后,尝试猜flag目录,读取文件。

出自:http://www.jianshu.com/p/16f4a473940a

这里可以反弹shell,也可以直接构造payload执行命令。

github工具:https://github.com/ajinabraham/Node.Js-Security-Course/blob/master/nodejsshell.py

 Misc_200_2

下载下来是一个password.tar.gz

是个truecrypt加密的文件

爆破了一些简单密码无果,没办法就根据官方主题去猜几个,后来就猜到这个密码gxnnctf2017,正确!

posted @ 2017-10-26 15:06  ur10ser  阅读(903)  评论(0编辑  收藏  举报