딩굴댕굴

[Christmas 2020] REVERSING - screw_driver

by jennysgap

BOX

Challenge:

 

Analysis:

sub_140002F10() 함수에서 3단계로 수행된다.

  1. if (v4 == 0x222004)
    • file 파일을 읽어 word_140005060에 저장
  2. else if (v4 == 0x222008)
    • word_140005040[0:25] = word_140005060[4:29]
    • word_140005060[0:4]에 "XMAS" 문자로 덮어씌우기
  3. if (v4 == 0x222000)
    • 미리 셋팅되어 있는 값(word_140005008)과 word_140005060 값(역순)을 xor 연산하여 str1에 저장
    • str2는 input값으로 str1과 비교하여 일치하지 않으면 프로그램 종료
    • str2[0:4]에 word_140005060[0:4] 덮어씌우기
    • 그리고 마지막으로 while문 연산
    • 연산 후의 str2 값이 flag 값이 된다.

 

Solve:

#!/usr/bin/env python2
#-*- coding: utf-8 -*-
#
# CTF: Christmas 2020
# screw driver (REV)
# 


# if ( v4 == 0x222004 )
f = open('./file', 'r')
buf = f.read()
f.close()

buf_5060 = [0 for i in range(29)]
for i in range(0, 29):
    buf_5060[i] = buf[i]


# else if ( v4 == 0x222008 )
buf_5040 = [0 for i in range(32)]
for i in range(4, 29):
    buf_5040[i-4] = buf_5060[i]

buf_5060[0:4] = 'XMAS'


# if ( v4 != 0x222000 )
buf_5008 = [0x73, 0x6B, 0x0C, 0x6A, 0x54, 0x0D, 0x52, 0x3F, 0x0C, 0x64, 0x6C, 0x2E, 0x65, 0x4A, 0x33, 0x0B, 0x43, 0x4E, 0x40, 0x26, 0x7F, 0x72, 0x1F, 0x68, 0x5B, 0x63, 0x34, 0x03, 0x3C]

str1 = []
for i in range(len(buf_5060)):
    str1.append(chr(buf_5008[i] ^ ord(buf_5060[28-i])))

str2 = str1 
print('input: ' + ''.join(str2))

str2[0:4] = buf_5060[0:4]

v4 = 0
v8 = -1
v11 = 1
v5 = 4
v7 = 5
v6 = 0
while(1):
    for j in range(v7):
        v8 += v11
        str2[v5] = chr(v6 + (ord(buf_5040[5*v4+v8]) ^ ord(str2[v5])))
        v5+=1
        v6+=1
    v7-=1
    if (v7<=0):
        break
    for k in range(v7):
        v4 += v11
        str2[v5] = chr(v6 + (ord(buf_5040[5*v4+v8]) ^ ord(str2[v5])))
        v5+=1
        v6+=1
    v11 = -1 * v11

print('output: ' + ''.join(str2))

 

Flag:

XMAS{Y0u_@r3_tH3_b35t_dRiv3r}
반응형

'BOX' 카테고리의 다른 글

[Christmas 2020] REVERSING - lock  (0) 2021.01.07
[TetCTF 2021] WEB - mysqlimit  (0) 2021.01.05
[TetCTF 2021] WEB - Super Calc  (0) 2021.01.05
[TetCTF 2021] WEB - HPNY  (0) 2021.01.05
공개키 암호 방식(RSA)  (0) 2020.12.15

블로그의 정보

jennysgap

jennysgap

활동하기