imwxz

IceCTF 2018 writeup
新人向CTF,正好适合我这种蒟蒻……
扫描右侧二维码阅读全文
09
2018/09

IceCTF 2018 writeup

新人向CTF,正好适合我这种蒟蒻……

Hello world!

签到题

Simple overflow

教程溢出题,跟着hint走很轻松愉快O(∩_∩)O,注意最后secret值有非打印字符,需要用转义字符\x输入ascii码,同时注意是小端序就行了。
POC:

1111111111111111\xbe\xba\xfe\xca

garfield

题目给了一幅图:
garfeld.png
底下的神秘代码就是加密的flag了,因为所有flag都是IceCTF{xxx}样式的,所以开头六个肯定是IceCTF,这样考虑是不是字符替换加密,然后右上角有个神秘数字07271978,瞬间意识到是不是就是偏移量,稍微数了下果然是这样,那这样就很清楚了,除了{}_以外其他都按上面的偏移,超过部分循环一下就行了,可以手动试试

IjgJUO{P_LOUV_AIRUS_GYQUTOLTD_SKRFB_TWNKCFT}
IceCTF{I_DONT_THINK_GRONSFELD_LIKES_MONDAYS}
072719 7 8072 71978 072719780 72719 7807271

或者直接用网上的轮子http://rumkin.com/tools/cipher/gronsfeld.php
flag:

IceCTF{I_DONT_THINK_GRONSFELD_LIKES_MONDAYS}

anticaptcha

过验证的题目,你要回答一大堆题目,还有时间限制,手动肯定是不现实的,但是仔细看看就会发现它其实是有规律的,也就三种问题不停地问,一个是问是不是素数,一个问最大公约数,一个问第几个单词,我们写个脚本跑一下就行了。把所有问题复制下来,避免麻烦我是ctrl-a的,然后去掉前面的,剩下的就是像这样的问题一共609个

What is the greatest common divisor of 3066 and 1445?   
number

POC做的就是去掉不必要标点,分隔然后计算,合成提交内容,注意测试时发现几个特例,网上搜一下做个特判就行了……
POC:

import math    

def isPrime(n):
    if n <= 1:
        return False
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True

def gcd(m,n):
    return m if not n else gcd(n, m%n)

ans=''
f = open("que.txt", "r")
for i in range(609):
    question = f.readline()
    f.readline() # eat
    question=question.strip('\r\n\t')
    question=question.replace('?','')
    question=question.replace('.','')
    piece=question.split()
    if len(piece) == 5 and piece[3] == 'prime':
        if(isPrime(int(piece[1]))):
            ans+='answer=true&'
        else:
            ans+='answer=false&'
    elif len(piece) == 10 and piece[3] == 'greatest':
        ans+='answer='+str(gcd(int(piece[7]),int(piece[9])))+'&'
    elif len(piece) > 9 and piece[4] == 'word':
        tmp=piece[3].replace('th','')
        tmp=tmp.replace('st','')
        tmp=tmp.replace('nd','')
        tmp=tmp.replace('rd','')
        offset=int(tmp)
        ans+='answer='+piece[8+offset]+'&'
    elif question=='What is the capital of Germany':
        ans+='answer=Berlin&'
    elif question=='What year is it':
        ans+='answer=2018&'
    elif question=='What color is the sky':
        ans+='answer=blue&'
    elif question=='Who directed the movie Jaws':
        ans+='answer=Steven Spielberg&'
    elif question=='What is the capital of Hawaii':
        ans+='answer=Honolulu&'
    elif question=='What is the tallest mountain on Earth':
        ans+='answer=Mount Everest&'
    elif question=='Which planet is closest to the sun':
        ans+='answer=Mercury&'
    elif question=='How many planets are between Earth and the Sun':
        ans+='answer=2&'
    elif question=='How many strings does a violin have':
        ans+='answer=4&'
    else:
        print(question)
        ans+='answer='+input()+'&'
f.close()

ans+="submit=Submit+Answers"
f = open("res.txt", "w")
f.write(ans)
f.close()

改包提交即得flag:

IceCTF{ahh_we_have_been_captchured}

Toke Relaunch

看了看这是个静态网站没啥东西,试试常用信息挖掘办法访问robots.txt

User-agent: *
Disallow: /secret_xhrznylhiubjcdfpzfvejlnth.html

此地无银三百两系列……直接访问这个网址就得到flag

IceCTF{what_are_these_robots_doing_here}

Lights out!

打开来漆黑一片,看源代码就一个css,受到了上题误导到处找文件……然而经过某大佬提示:好好看看源码,我发现那个最小化的“看似”Bootstrap库的文件其实是做了手脚的……里面有一个属性是content,而且看上去似乎是flag拆分而成的!F12看了下后面“什么也没有”的两个元素,每个元素content属性拼接而成就是flag……尼玛啊这出题人,还煞有其事在css文件前面加上版权声明草!

IceCTF{styles_turned_the_lights}

Friðfinnur

一个开了debugbar的laravel框架,然而我觉得这个题目出bug了……正确解法应该是通过debugbar看到jobs/{alias}然后尝试非法别名抛出异常……但是导航栏的Jobs栏出现了问题……

<a class="nav-link" href="jobs">Jobs</a>

这是它的代码……但是href忘了加'/',导致你在随便一个job里面再点一次这个就触发异常抛出flag了……(我才不会说我就是到处乱点莫名其妙出flag了……)

IceCTF{you_found_debug}
最后修改:2018 年 09 月 13 日 11 : 24 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论