ssoL2 TISTORY

[FTZ] LEVEL13 풀이 본문

challenge/pwn

[FTZ] LEVEL13 풀이

ssoL2 2021. 2. 1. 07:09

level13 / have no clue


hint를 봅시다.

 

인자는 1개 이상이고, 그 인자를 bof하는 문제인 것 같다. 

하지만 i 변수가 변하지 않는 조건으로 bof 해야 하는 문제이다. i를 침범하면 kill 시스템콜로 프로세스가 죽는다.

 

 

gdb로 i 변수와 buf 배열 사이의 간격을 찾아봅시다.

 

strcpy의 인자인 buf는 ebp-1048 위치에 있으며

if는 cmp로 ebp-12에 있는 값과 0x1234567과 비교하므로 i는 ebp-12에 위치한다.

 

 

따라서 ebp-1048는 buf 위치고 ebp-12는 i 위치이므로 구조는 아래와 같다.

 

buf랑 dummy 두 개에는 NOP으로 채우고 i는 그대로 0x1234567로 변조하지 않게 한 뒤에

level 11, level12에서 풀었던 방법인 RTL을 사용하면 풀릴 것이다.

 

참고로 i 변수는 long type이므로 4 bytes이다.

 

 

ldd, nm, strings 명령어를 통해 최종적으로 system 함수 주소와 /bin/sh 주소를 얻었다.

(=> 자세한 내용은 level11에서 다룸)

 

최종적으로 NOP*(1024+12) + 0x1234567 + NOP*8 + NOP*4(ebp) + system주소 + NOP*4(system RET) + /bin/sh주소 구조가 완성되었다. 쉘이 등장하고 level14 권한을 획득했다. 해결완료!

(각 주소는 리틀인디안 형식으로 작성해야하며, 해당 문제는 argv[1] 인자를 받는 것이므로 인자 payload 형식을 갖춤)

 

'challenge > pwn' 카테고리의 다른 글

[FTZ] LEVEL15 풀이  (0) 2021.02.01
[FTZ] LEVEL 14 풀이  (0) 2021.02.01
[FTZ] LEVEL12 풀이  (0) 2021.02.01
[FTZ] LEVEL 11 완벽분석  (1) 2021.02.01
[FTZ] LEVEL 10 풀이  (0) 2021.01.29
Comments