-
0x25.SSG - easy_linux_reversing0x.CTF 2018. 11. 9. 20:34
0x25.SSG - easy_linux_reversing
파일 & 소스 : https://github.com/pwnwiz/CTF/tree/master/easy_linux_reversing
문제는 간단하다. 사용자로부터 입력을 받고 해당 입력의 길이에 따라 인코딩 루틴을 진행한다. 사용자로부터 입력받는 문자열과 길이에 따라 값이 변경되니 decode_it.txt의 문자의 개수만큼 for문을 돌리며 s[i]을 역연산 하는 방식으로 진행하였다.
익스플로잇 코드
v8 = ['C', 'f', 'D', 'Z', 'q', 'B', 'r', 'p', 'R', 'W', 'j', '1', 'z']
test = [222, -125, 83, -115, -116, -79, 189, -105, 195, 145, 211, 37, 208]
v10 = ['T', 'z', '1', 'j', 'W', 'R', 'p', 'r', 'B', 'q', 'Z', 'D', 'f']
v8_1 = [] # ord(v8)
v10_1 = [] # ord(v10) + i
and_v10 = [] # v10+i & 1
xor_v8 = [] # XOR V8
v10_ord =[] # ord(v10)
for i in range(13):
result1 = ord(v8[i]) # v8_1 -> ord
v8_1.append(result1)
result2 = ord(v10[i]) # v10_ord -> ord
v10_ord.append(result2)
result2 += i # v10_1 = v10_ord + i
v10_1.append(result2)
result3 = v10_1[i] & 1 # and_v10 = v10_1[i] & 1
and_v10.append(result3)
result4 = v8_1[i] ^ test[i] # xor_v8 = v8_1[i] ^ v10+v7-i
xor_v8.append(result4)
flag = []
chr_flag = ''
for i in range(13):
if and_v10[i] == 1:
result = v10_ord[i] + xor_v8[i]
flag.append(result)
elif and_v10[i] == 0:
result = xor_v8[i] - v10_ord[i]
flag.append(result)
print flag
for i in range(13):
try:
chr_flag += chr(flag[i])
except:
pass
print chr_flag'0x.CTF' 카테고리의 다른 글
0x27.Whitehat Quals 2017 - hacking_team_manager (0) 2018.11.29 0x26.WITHCON 2017 - combination (0) 2018.11.22 0x24.SSG - fortune_cookie (0) 2018.11.08 0x23.0ctf 2018 - blackhole (0) 2018.11.06 0x22.CODEGATE 2015 - yocto (0) 2018.10.31 댓글