mgchem's log
article thumbnail
Published 2023. 10. 7. 13:00
Lab2: Bomblab (phase 1) Study/CS

Bomblab

 

bomb-quiet를 해결했으니 이제 본게임으로.

Bomblab은 phase 1 ~ phase 6 (+secret phase?) 로 구성되어 있다.

전체 코드를 disassemble하여 읽어보기에는 너무 길기에,

gdb를 실행하고 disas phase_1처럼 특정 함수 부분만 disassemble하여 살펴보는 편이 효율적이다.

 


Defusing phase 1

 

phase_1 처음부터 한 줄씩 실행시키기 위해 phase_1에 breakpoint를 설정한다.

phase 1을 해결하면 바로 phase 2로 넘어갈테니 혹시나 실수로 터뜨리는 일을 방지하기 위해 phase_2와 explode_bomb에도 break를 걸어준다.

 

strings_not_equal로 가기 전 0x12f8에서는 %rsi에 0x2cd0라는 수상한 값을 넣어준다.

%rdi에는 우리의 입력값이 들어있을테고, strings_not_equal에서는 %rdi와 (%rsi)의 data를 비교할 것이라는 추측 하에,

bomb를 실행하고 phase_1에서 한 줄씩 실행시키다가

0x12ff, 즉 strings_not_equal로 가기 직전의 (%rsi)값을 string으로 출력해본다.

 

 

입력값은 임의로 hello를 넣어주었다.

설정한 대로 phase_1에서 break가 걸리는 것을 확인하였고, si로 한 줄씩 실행시킨다.

%rip가 0x12ff일 때 x/s $rsi로 (%rsi)값을 string으로 출력하면 시적인 문구가 한 줄 나온다.

밑져야 본전이니 해당 문구를 넣어보자.

quit로 실행을 종료하고, 혹시 모르니 breakpoint를 explode_bomb에 걸어두고 bomb을 재실행한다.

 

phase 1은 bomb-quiet와 같이 간단하다. phase 2는 점심먹고 해보자.

'Study > CS' 카테고리의 다른 글

Lab2: Bomblab (phase 5)  (0) 2023.10.08
Lab2: Bomblab (phase 4)  (0) 2023.10.08
Lab2: Bomblab (phase 3)  (1) 2023.10.08
Lab2: Bomblab (phase 2)  (0) 2023.10.08
Lab2: Bomblab (bomb-quiet)  (0) 2023.10.07
profile

mgchem's log

@mgchem

뱁새의 다리찣기