Flag={C0MPU73R}

(리버싱) 밤랩 bomb - phase_5 본문

사이버 가디언즈

(리버싱) 밤랩 bomb - phase_5

땡관 2018. 8. 29. 01:05

#bomb 문제는 phase_1 부터 phase_6까지 6개의 문제로 이루어져있다

#1단계부터 6단계까지 모두 맞춰야 폭탄이 해체되는 형식이다


이번에는 phase_5를 정리한당


이번에도 숫자 두개를 입력하는 문제다


어짜피 터질거기 때문에 그냥 바로 분석한다



인자1과 인자2를 입력 받는데 


입력받고 rsp(인자1)와 15(0xf)를 비교해서


틀리면 점프하고 같으면 터진다


인자에 1과 2를 넣고 통과해서 다음부분을 분석해본다



ecx에 0x0을 넣는다


edx에 0x0을 넣는다


edx에 0x1을 더한다 - edx(1)


eax에 뭔가를 넣는다


ecx에 eax(뭔가)를 더한다


eax와 0xf를 비교해서 틀리면 뒤로 점프한다


여기서 eax에 들어가는 뭔가가 계속 다른게 나오길래 나오는 순서대로 적어둔다


1 2 e 6 f


f가 나와서 비교문에서 통과되어 +91로 넘어간다



분석해보자


rsp에 0xf를 넣는다


edx와 0xf를 비교해서 틀리면 폭탄이 터진다


edx는 아까 분석한 부분에서 eax에 들어가는 뭔가가 바뀔 때 마다


1씩 추가되었는데 여기서 f일때 통과되는 것 보니까 지금은 f가 4번째에 나와서 4인데 


eax가 0xf 일 때 통과되고 edx도 0xf일 때 통과되는 걸 보면


그 eax에 뭔가가 들어가는 거에서 f가 마지막으로 와야하는 것 같다


첫번째 인자에 1을 넣었을 때 "1 2 e 6 f"로 첫번째 인자로 시작해서 순서대로 나오는 것 같다


첫번째 인자를 1, 2, 6, e, f를 제외하고 하나를 넣어본다 (인자 = 3 2)



이번엔 3으로 시작되서 "3 7 b d 9 4 8 0 a 1 2 e 6 f"를 끝으로 총 14개만 나오고 끝난다


정리해보면 (1 2 3 4 * 6 7 8 9 a b * d e f) 여기서 안나온건 5와 c가 있다


이중에 하나를 넣으면 f가 맨 마지막으로 나올 것 같다


먼저 첫번째 인자를 5로 넣어본다 (인자 = 5 2)



"5 c 3 7 b d 9 4 8 0 a 1 2 e 6 f" 이렇게 5를 시작으로 rdx가 마지막 0xf일 때


eax에도 0xf가 들어가 있다 


5를 맨 처음에 넣어야 f가 맨 마지막에 오는 순서인 것 같다



eax는 0xf 이기 때문에 통과


edx도 0xf 이기 때문에 통과


마지막에 두번째 인자 rsp+0x4와 ecx를 비교해서


같으면 폭탄을 통과해서 클리어하게 된다



값을 보면 0x73으로 10진수로 변환하면 "115"다


이래서 첫번째 인자는 "5" 두번째 인자는 "115"를 입력하면 클리어 하게 된다



phase_5 클리어~


# 정리를 다른사람이 이해하기 쉽게 잘 못하겠다 ㅜㅜ