힌트로 소스코드가 나옵니다.
strcpy가 보입니다.
BOF로 풀면 될 듯 합니다.
Buffer Overflow의 개념을 모르시면 다음 글을 읽고 오세요.
->
gdb로 attackme를 열어봅니다.
먼저 main에 Break point를 걸고 분석합니다.
stack을 초반에 264(0x108)만큼 확보합니다.
Stack 구조
Low addr
buf and var (264-byte) |
sfp (4-byte) |
ret (4-byte)
|
High addr
nop slide와 shell code로 268-byte를 만들고 끝에 ret를 덮어씌우면 될 듯 합니다.
return 할 주소를 찾기 위해 buffer에 접근하는 strcpy 주변을 찾아봅니다.
좀 많습니다.
아왜
찾았습니다.
0xbffff910부터 buffer가 시작됩니다.
nop slide와 shell code 그리고 ret 값을 넣어줍니다.
nop slide 중간쯤에 대충 떨어뜨려줍니다.
level12의 shell이 떨어졌습니다.