Flag={C0MPU73R}

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

사이버 가디언즈

(리버싱) 밤랩 bomb - phase_4

땡관 2018. 8. 27. 23:11

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

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


문제를 실행한다 이번에도 숫자 2개를 입력하는 문제다


1과 2를 입력하고 어김없이 터져버린다 gdb로 분석해보자



오 phase_4는 한 화면에 다 들어온다 편------안


일단 phase_4+38에 break를 걸고 실행해서 첫번째 폭탄이 통과 되는지


확인해본다 (Input : 1 2)


break까지 실행하고 보니까 eax = 2 라 통과 된다



다음 부분을 분석해보면


eax에 rsp를 넣는다 (rsp는 두번째 인자 "2")


eax에서 2를 뺀다 (eax에는 두번째 인자 "2"가 들어있어서 2-2=0이 된다)


eax(0)를 0x2와 비교한다


비교해서 같거나 작으면 +59로 점프한다 (두번째 인자는 2부터 4까지 들어갈 수 있는것 같다)


이렇게 phase_4+59로 점프한다



다음 부분은 이제 저 비교문만 통과하면 될 것 같다


처음엔 <func4>까지 들어가서 하나하나 분석했는데 그럴 필요가 없었다 허허..


비교문에서 eax와 rsp+0x4 즉 첫번째 인자와 비교하는데 


저기까지 가면 eax의 값을 볼 수 있어서 답을 알 수 있었다 허허허허


일단 이동



eax의 값은 0x28이다 여기서! 그냥 28 입력하면 안되고 



16진수이기 때문에 당연히 10진수로 변환 해줘야한다


파이썬에서 print(0x28)하면 10진수로 알려준다 0x28은 "40"이다


첫번째 인자를 40과 비교하는데 우린 "1"을 넣었기 때문에 폭탄이 터진다


문제를 실행해서 40으로 넣어본다



어우 그냥 클리어 해버렸다


뭔가 phase_2보다 쉬운 것 같다.. 


밤랩에서 phase_4부터 phase_6까지만 내가 태어나서 혼자 푼 문제다 헤헤


앞엔 도움을 받았다