IW_CTF_2016_Writeup

Internetwache CTF 好像題目偏易?
第二天早上起來看一堆隊伍已經通殺
台大217沒意外的拿下了冠軍XD

Misc 70-Rock with the wired shark!

題目給了一個pacp
先丟Wireshark
發現一個html跟zip,把它們dump出來
zip需要密碼
不過仔細看網頁上有一個奇怪的網址servefile 0.4.4
點進去看他的code 搜尋關鍵字password
找到有趣的兩行
1035  parser.add_argument('-a', '--auth', type=str, metavar='user:password', \
1036                      help="Set user and password for HTTP basic authentication")
得到了格式user:password
以及HTTP basic authentication
回Wireshark翻

找到flag.zip的密碼
FLAG: IW{HTTP_BASIC_AUTH_IS_EASY}
這題算是運氣運氣,因為code review只看了幾行就找到關鍵
密碼也沒有藏的很深,也沒有用到太多技巧

Reversing50-SPIM

題目給了一個從SPIM dump下來的資料以及Decode this string: "IVyN5U3X)ZUMYCs"
大三學過計組就玩過了SPIM
馬上安裝好環境把code輸入進去
label可以從j 指令回推
flag 就填入他給的字串
原本以為結束了 但怎麼都跳不出flag
trace發現它做完會跳到exit...
最後的code長這樣
.text

.globl main

main:


la $t0, flag
move $t1, $0

for:
sgt $t2, $t1, 15
beq $t2, 1, printstring
add $t2, $t0, $t1
lb $a0, ($t2)
xor $a0, $a0, $t1
sb $a0, 0($t2)
add $t1, $t1, 1
move $a0, $t0
j for

exit:
li $v0, 10
syscall

printstring:
li $v0, 4
syscall
jr $ra

.data

flag: .asciiz "IVyN5U3X)ZUMYCs"



FLAG: IW{M1P5_!S_FUN}
只能說感恩楚迪哥讚嘆楚迪哥XD

Recversing60-File Checker

題目給了一個x64ELF
直接IDA F5

程式會讀.password並進行驗證
for迴圈可以看出密碼有15位
v3每次經過sub_40049c都必須為0
否則v7就無法通過<=0的驗證
往sub_40049c追進去

會看到return=a2+*(&v4+a1)%4919
我們想要每次都可以return 0
只要傳進去的值=4919-變數就可以了!
a=[4846, 4832, 4796, 4849, 4846, 4843, 4850, 4824, 4852, 4847, 4818, 4852, 4844, 4822, 4794]
flag=""
for i in a:
    flag+=chr(4919-i)
print flag
FLAG: IW{FILE_CHeCKa}
這題很特別的是用file input所以不能用pintool解(原本想試試看的
不過找到了驗證的core而且也不難推導出來

Reversing90-The Cube

題目給了一個魔術方塊表跟轉法?!
原本想要真的拿方塊解
但是放在家裡所以沒辦法
但想了想這題...可以猜一猜就解完了
因為flag的格式是固定的
魔術方塊腳跟邊是不能交換的
可以先推出
IW{
sDs
Cs}
s=[3,3,R]
所以flag只有三種可能
運氣不好真的猜了三次XD
FLAG: IW{3DRC3}
玩過魔術方塊+題目很簡單(答案在同一面,沒有繞一圈)

Code50-A numbers game

題目會問你一個一元一次方程式
寫了一個code解決他
from pwn import *

op=['+','-','*','/']
po=['-','+','/','*']
r = remote('188.166.133.53',11027)
print r.recvline()
for _ in range(100):
    q = r.recvline()
    print q
    s = q.split()
    mm=s[6]+po[op.index(s[3])]+s[4]
    ans=str(eval(mm))
    print ans
    r.send(ans)
    print r.recvline()
r.interactive()

FLAG: IW{M4TH_1S_34SY}
基本的python使用,學習了recv(),recvline()等用法

Code60-It's Prime Time!

題目會問你大於X的質數
懶得自己寫python的質數表上網抓了一個...
from pwn import *

def primes(n):
    """ Returns  a list of primes < n """
    sieve = [True] * n
    for i in xrange(3,int(n**0.5)+1,2):
        if sieve[i]:
            sieve[i*i::2*i]=[False]*((n-i*i-1)/(2*i)+1)
    return [2] + [i for i in xrange(3,n,2) if sieve[i]]

r = remote('188.166.133.53',11059)
print r.recvline()
a=primes(1000)
for _ in range(100):
    q = r.recvline()
    print q
    s = q.split()
    base=int(s[8][0:-1])
    for prime in a:
        if prime>base:
            print prime
            r.send(str(prime))
            break
    print r.recvline()
r.interactive()
FLAG: IW{Pr1m3s_4r3_!mp0rt4nt}
一樣python操作題
=============================================================

下面是看隊友討論做出來的

Web80-0ldsk00lBlog

掃到目錄有/.git

使用scrabble抓下來
用SourceTree打開就會看到
FLAG: IW{G1T_1S_4W3SOME}
之前git手抓抓到吐,Denny在比賽途中發這個動態不單純XDD

留言