[App system] ELF x64 - Stack buffer overflow - advanced
·
Wargame/Root me
1. intro 2. code 및 분석 2.1. code #include #include /* gcc -o ch34 ch34.c -fno-stack-protector -Wl,-z,relro,-z,now,-z,noexecstack -static */ int main(int argc, char **argv){ char buffer[256]; int len, i; gets(buffer); len = strlen(buffer); printf("Hex result: "); for (i=0; i pwnlib.shellcraft.amd64 — Shellcode for AMD64 — pwntools 2.2.1 documentation Shellcraft module containing generic Intel x86_..
Dream's Notepad
·
Wargame/Dreamhack
보호되어 있는 글입니다.
validator
·
Wargame/Dreamhack
드디어 마지막 문제! 오랜만에 코드 없는 문제를 본다. 문제 파일을 다운로드 및 압축을 해제하면 두개의 파일이 나온다. 사실 코드가 없기에 ida와 같이 디스어셈블러 프로그램 사용법을 먼저 익힌 후 푸는 것이 맞는 것 같다. 사실 디스어셈블러 프로그램은 코드를 해석하기 편하게 만들어놓은 것이라 어셈블리어를 알고 있다면 굳이 사용할 필요는 없다. 개인적으로 어셈블리어 실력이 그렇게 좋지 않기 때문에, 핸드레이까지는 어렵고, 어느정도 해석만 가능한 수준이라 시간이 너무 오래 걸려 ida를 쓰기로 했다. 우선 varidator_dist 파일의 보안 기법을 확인. ┌──(kali㉿kali)-[~/Downloads] └─$ checksec validator_dist [*] '/home/kali/Downloads/..
basic_rop_x86
·
Wargame/Dreamhack
#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } int main(int argc, char *argv[]) { char buf[0x40] = {}; initialize(); read(0, buf, 0x400); write(1, buf, sizeof(buf)); return 0; } 32bit rop 문제이다. 앞선 문제에서 설명한 것과 같이 64 bit와의 차이는..
rop
·
Wargame/Dreamhack
// Name: rop.c // Compile: gcc -o rop rop.c -fno-PIE -no-pie #include #include int main() { char buf[0x30]; setvbuf(stdin, 0, _IONBF, 0); setvbuf(stdout, 0, _IONBF, 0); // Leak canary puts("[1] Leak Canary"); printf("Buf: "); read(0, buf, 0x100); printf("Buf: %s\n", buf); // Do ROP puts("[2] Input ROP payload"); printf("Buf: "); read(0, buf, 0x100); return 0; } 앞선 문제와 동일하게 canary는 얻으면 되고, 이 문제의 ..