본문 바로가기

분류 전체보기

(156)
[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..
[Dreamhack] Tcache Poisoning 풀이 - 티스토리 문제 코드 #include #include #include int main() { void *chunk = NULL; unsigned int size; int idx; setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); while (1) { printf("1. Allocate\n"); printf("2. Free\n"); printf("3. Print\n"); printf("4. Edit\n"); scanf("%d", &idx); switch (idx) { case 1: printf("Size: "); scanf("%d", &size); chunk = malloc(size); printf("Content: "); read(0, chunk, size - 1); bre..
[Code Up] - Python 기초 100제, 6098번 풀이 - 티스토리 더보기 문제 설명 주어진 규칙에 따라 개미가 움직인 방향에 해당되는 미로 상자를 출력하자 풀이 box = [] for i in range(10): box.append([]) for j in range(10): box[i].append(0) for i in range(10): box[i] = list(map(int, input().split())) x = 0 y = 0 while (True): if (box[1+y][1+x] != 1): box[1+y][1+x] = 9 x += 1 else: x -= 1 y += 1 if(box[1+y][1+x] == 1): break if (box[1+y][1+x] == 2): box[1+y][1+x] = 9 break for i in range(10): for j in..
[Code Up] - Python 기초 100제, 6097번 풀이 - 티스토리 더보기 문제 설명 입력에 해당 되는 값들로 격자판 위에 막대를 놓아 새로운 격자판을 만들자 풀이 location = [] height, width = map(int, input().split()) n = int(input()) for i in range(height): location.append([]) for j in range(width): location[i].append(0) length = 0 direction = 0 x = 0 y = 0 for i in range(n): length, direction, x, y = map(int, input().split()) if (direction == 1): for j in range(length): if(x+j