//writen by bla #include #include int main() { char username[1024]; FILE* f = popen("whoami","r"); fgets(username, sizeof(username), f); printf("Welcome %s", username); return 0; } 푸는법을 생각하다가 $PATH환경변수 변조를 택함/tmp/err0rless에 내가 만든 whoami를 만들면 popem으로 연 whoami가내가 조작한 whoami로 실행될 것이다. level4@io:/levels$ ls /tmp/err0rlesswhoami whoami.clevel4@io:/levels$ cat /tmp/err0rless/whoami.c#include main() { ..
//bla, based on work by beach #include #include void good() { puts("Win."); execl("/bin/sh", "sh", NULL); } void bad() { printf("I'm so sorry, you're at %p and you want to be at %p\n", bad, good); } int main(int argc, char **argv, char **envp) { void (*functionpointer)(void) = bad; char buffer[50]; if(argc != 2 || strlen(argv[1])
//a little fun brought to you by bla #include #include #include #include void catcher(int a) { setresuid(geteuid(),geteuid(),geteuid()); printf("WIN!\n"); system("/bin/sh"); exit(0); } int main(int argc, char **argv) { puts("source code is available in level02.c\n"); if (argc != 3 || !atoi(argv[2])) return 1; signal(SIGFPE, catcher); return abs(atoi(argv[1])) / atoi(argv[2]); } SIGFPE는 int형 오류가 ..
level1@io:/levels$ gdb -q level01Reading symbols from /levels/level01...(no debugging symbols found)...done.(gdb) disas mainDump of assembler code for function main: 0x08048080 :push $0x8049128 0x08048085 :call 0x804810f 0x0804808a :call 0x804809f 0x0804808f :cmp $0x10f,%eax 0x08048094 :je 0x80480dc 0x0804809a :call 0x8048103 End of assembler dump. (gdb) p 0x10f$1 = 271(gdb) qlevel1@io:/levels$ ..
xor를 할때 값에 0x00을 주면 자신이 나옴 0x50 ^ 0x00 = 0x50 그래서 keybuf의 값 128(sizeof int * 32)을 모두 0x00으로 주고 keybuf를 구했음. 사실 처음에 이 문제를 풀었을때는 system함수 구해서 풀었는데 IDA로 까보니까 execve.plt가 있었다. 그래서 .bss section에 read로 execve의 인자값이 될 "/bin/sh", {"/bin/sh", 0}를 만들어두고 execve의 인자값을 bss영역의 주소로 줬음 확실히 system 구하는것보다 깔끔하게 나옴
ASLR 걸려있고 buffer 주소를 출력해 주지 않는다. fusion 내부에 있는 ROPgadget 프로그램을 이용하면 jmp *%esp를 쉽게 찾을 수 있다. ret 바로 뒤 4바이트로 점프하게 되고 esi에 우리가 넣은 쉘코드가 위치하게 됨 ret뒤 4바이트에다 jmp *%esi opcode넣어주고 ret를 jmp *%esp로 주면 쉘 획득 가능 https://gist.github.com/err0rless/49c2b54554dc67fd2bb3