新人向CTF,正好适合我这种蒟蒻……
Hello world!
签到题
Simple overflow
教程溢出题,跟着hint走很轻松愉快O(∩_∩)O,注意最后secret值有非打印字符,需要用转义字符\x
输入ascii码,同时注意是小端序就行了。
POC:
1111111111111111\xbe\xba\xfe\xca
garfield
题目给了一幅图:
底下的神秘代码就是加密的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}