오래 못 할 짓 하지 않기

[ 워게임 ] 64. Reversing : Adventure 본문

보안_모의해킹/CTF (Capture The Flag)

[ 워게임 ] 64. Reversing : Adventure

쫑알bot 2025. 7. 12. 10:09
728x90

 

이것도 인자가 있어야 한다.

 

Line 11 : 첫번째 인자의 길이가 5여야 한다 && Hello여야 한다.

Line 15 : 입력을 받아서 s에 넣는다.

Line 18: agrv랑 s랑 같은지 비교하여 최종 판단.

 

우리가 확인해야하는 곳은 아래 3번째 줄에 있는 _strncmp이다.

 

해당 함수를 call하는 주소는 0x0917 이다.

 

일단 PIE가 실행되어있으므로 breakrva를 해야한다.

 

더보기

[ break vs breakrva ] 

break : 절대 주소로 break를 건다.

breakrva : 상대 주소로 break를 건다.

 

하지만 이에 대한 기준은 PIE가 실행되었느냐 아니냐이다.

PIE는 실행될 때마다 바이너리 파일/메모리의 base가 바뀌기 때문이다.

 

 

우선 디컴파일 했을 때에 (IDA에서 확인한 정보들) 맞추기 위해 인자를 hello로 넣는다.

 

 

들어올 수 있다. 

더보기

만약 인자를 안 넣었다면 아래와 같이 나왔을 거임

오답노트

 

 

argv의 첫번째 인자인 실행 경로와 내가 입력하는 걸 비교하는 곳에서 break가 걸렸다.

그럼 처음 start에 인자를 hello로 주고

다음 입력에서 실행되고 있는 경로 ( /home/seed/for_reverse/adventure ) 로 주면 된다.

 

 

 

성공

 


처음에 strncmp가 많길래 괜히 쫄았다.

하나하나 생각해보면서 차근차근 들어오면 된다.