본문 바로가기

System Hacking

(26)
[Dreamachk] mmapped write up 포너블 level1 정복 두 번째 문제 #include #include #include #include #include #define FLAG_SIZE 0x45 void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); } int main(int argc, char *argv[]) { int len; char * fake_flag_addr; char buf[0x20]; int fd; char * real_flag_addr; initialize(); fd = open("./flag", O_RDONLY); len = FLAG_SIZE; fake_flag_addr = "DH{**********************..
[Dreamhack] Cherry write up 오랜만에 포너블 워게임 #include #include #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); } void flag() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main(int argc, char *argv[]) { int stdin_fd = 0; i..
[Dreamhack] basic_heap_overflow write up - 티스토리 문제 코드 #include #include #include #include #include struct over { void (*table)(); }; 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); } void get_shell() { system("/bin/sh"); } void table_func() { printf("overwrite_me!"); } int main() { char *ptr = malloc(0x20); st..
[Dreamhack] validator 풀이 - 티스토리 소스코드가 없이 바이너리 파일만 존재하므로 ida를 이용해서 디컴파일을 했다 소스 코드 _int64 __fastcall main(int a1, char **a2, char **a3) { char s[128]; // [rsp+0h] [rbp-80h] BYREF memset(s, 0, 0x10uLL); read(0, s, 0x400uLL); sub_400580(s, 128LL); return 0LL; } __int64 __fastcall sub_400580(__int64 a1, unsigned __int64 a2) { unsigned int i; // [rsp+1Ch] [rbp-4h] int j; // [rsp+1Ch] [rbp-4h] for ( i = 0; i j; ++j ) { if ( *(char *)..
[Dreamhack] command injection, cmd_center 풀이 - 티스토리 문제 코드 #include #include #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int main() { char cmd_ip[256] = "ifconfig"; int dummy; char center_name[24]; init(); printf("Center name: "); read(0, center_name, 100); if( !strncmp(cmd_ip, "ifconfig", 8)) { system(cmd_ip); } else { printf("Something is wrong!\n"); } exit(0); } 코드 설명 center_name에 보다 많은 길이를 입력 가능해서 cmd_i..
[Dreamhack] Type Error, sint 풀이 - 티스토리 문제 코드 #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); } void get_shell() { system("/bin/sh"); } int main() { char buf[256]; int size; initialize(); signal(SIGSEGV, get_shell); printf("Size: "); scanf("%d", &size); if (size > 25..
[Dreamhack] tcachee_dup2 풀이 - 티스토리 문제 코드 #include #include #include #include char *ptr[7]; void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); } void create_heap(int idx) { size_t size; if (idx >= 7) exit(0); printf("Size: "); scanf("%ld", &size); ptr[idx] = malloc(size); if (!ptr[idx]) exit(0); printf("Data: "); read(0, ptr[idx], size-1); } void modify_heap() { size_t size, idx; printf("idx: ")..
[Dreamhack] tcache dup 풀이 - 티스토리 문제 코드 #include #include #include #include char *ptr[10]; void alarm_handler() { exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(60); } int create(int cnt) { int size; if (cnt > 10) { return -1; } printf("Size: "); scanf("%d", &size); ptr[cnt] = malloc(size); if (!ptr[cnt]) { return -1; } printf("Data: "); re..