ii4gsp

FTZ - Level15 본문

시스템 해킹/FTZ

FTZ - Level15

ii4gsp 2020. 1. 10. 00:34

힌트파일을 보면 level14문제에서 보았던 check변수를 포인터로 바뀐것을 알 수 있다.

포인터 변수는 메모리의 주소 값을 저장하는 변수이기 때문에 check변수에 들어가는 값은 메모리 주소의 값이 저장된다.

 

 

 

 

<main+17> - 0xffffffc8은 ebp-56이다.

<main+29> - 0xfffffff0은 ebp-16이다.

따라서 buf에서 *check까지의 거리는 56 - 16 = 40

40byte라는 빈공간을 채워줘야 할 것이다.

<main+32> - 0xdeadbeef와 *check 포인터가 값을 비교한다.

메모리 상에서 0xdeadbeef의 주소를 알아내 *check의 주소를 0xdeadbeef의 주소로 덮어 씌우면 쉘이 실행될 것이다.

 

 

 

 

0x080484b2가 0xdeadbeef의 메모리 상의 주소이다.

이제 페이로드를 작성할 수 있을 것이다.

buf ~ *check + \xb2\x84\x04\x08

 

 

 

 

 

payload

(python -c 'print "\x90" * 40 + "\xb2\x84\x04\x08"';cat) | ./attackme

'시스템 해킹 > FTZ' 카테고리의 다른 글

FTZ - Level17  (0) 2020.01.10
FTZ - Level16  (0) 2020.01.10
FTZ - Level14  (0) 2020.01.09
FTZ - Level13  (0) 2020.01.08
FTZ - Level12  (0) 2020.01.08
Comments