FTZ_level13
해킹/FTZ 11~20 2016. 1. 13. 17:31
level13 attackme의 소스코드.
보아하니 level11과 마찬가지로 argv로 입력을 받으면서 중간에 있는 i를 건드리지 말아야 하는 모양이다.
일종의 canary와 비슷하게 만든것 같은데 그냥 중간에 0x1234567을 다시 넣어주면 된다. 64비트였으면 0x0000000001234567 이런식으로 널을 4바이트를 넣어줘야 하고 그러면 뒷부분을 입력할 수 없어 매우 까다로웠겠지만 32비트 운영체제에서는 long도 똑같이 4바이트를 할당한다.
디버깅을 해보자.
strcpy를 호출하기 전을 보니 ebp-1048부분이 buf변수에 할당된 부분이고 cmp부분을 보니 ebp-12 부분이 i변수에 할당된 부분이다.
음 그렇다면 ebp-1048부터 ebp+8까지 총 1056바이트를 덮어야 하고
이 1056바이트의 구성은 더미1036바이트 + 0x1234567 + 더미 12바이트 + 쉘코드 주소 4바이트가 되겠다.
먼저 이전과 마찬가지로 환경변수 oxqo에 쉘코드를 넣어주고..
getenv를 하는 test라는 프로그램을 돌려서 구한 oxqo환경변수의 주소는 0xbfffd525.
5000정도를 더한 0xbfffe8ad를 리턴에 넣어주도록 하자.
더미바이트를 a b c 순서로 넣어줬는데 c부분 4바이트가 SFP 영역이고 그 뒤 네바이트가 리턴주소이다.
캡쳐에서 보이다시피 쉘이 잘 열렸다.
끝-
'해킹 > FTZ 11~20' 카테고리의 다른 글
FTZ_level16 (0) | 2016.01.13 |
---|---|
FTZ_level15 (0) | 2016.01.13 |
FTZ_level14 (0) | 2016.01.13 |
FTZ_level12 (0) | 2016.01.13 |
FTZ_level11 (0) | 2016.01.13 |