Dreamhack Wargame(68)
-
proxy-1 풀이
우선 웹페이지에서 Raw Socket Sender (Done)이라는 부분에 들어가 보겠습니다. host, port를 지정하고 거기에 원하는 Data를 보낼 수 있도록 구현해놓은 것 같습니다. 소스코드를 보면, /admin이라는 형식으로 POST에 접속했을 때 admin() 함수가 실행됩니다. 그리고 if문이 5개 보이는데, 이 조건들을 모두 불만족했을 때 FLAG를 획득할 수 있습니다. 조건 1. 로컬 호스트에서 접속하기 조건 2. user-Agent의 값이 'Admin Browser'이어야 함 조건 3. Dreamhackuser 헤더 값이 'admin'이어야 함 조건 4. 'admin'의 쿠키 값이 true여야 함 조건 5. userid의 값이 'admin'이여야 함 host는 127.0.0.1, po..
2021.08.11 -
basic_exploitation_003 풀이
#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(int argc, char *argv[]) { char *heap_buf = (char *)malloc(0x80); char stack_buf[0x90] = {}; initialize(); read(0, heap_buf, 0x80..
2021.08.04 -
basic_heap_overflow 풀이
#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); struct o..
2021.08.03 -
basic_exploitation_002 풀이
#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(int argc, char *argv[]) { char buf[0x80]; initialize(); read(0, buf, 0x80); printf(buf); exit(0); } https://dreamhack.io/learn/2..
2021.08.02 -
basic_rop_x64 풀이
이번 문제도 basic_rop_x86과 같이 C 소스코드를 제공합니다. 코드 자체는 basic_rop_x86과 똑같으니 코드 분석은 생략하도록 하겠습니다. 만약 코드 분석이 보고 싶으신 분들은 아래에 달린 링크로 들어가서 봐주시면 됩니다. [ basic_rop_x86 풀이 ] basic_rop_x86 풀이 문제에서 C 소스코드를 주네요? 분석해보겠습니다. 우선 initialize(), alarm_handler() 함수는 중요해 보이지 않으니 한 줄 해석만 하겠습니다. initialize() : buf 세팅, 30초 후에 alarm_handler() 함수에게.. studykty.tistory.com 푸는 방식은 basic_rop_x86과 비슷할 것 같으니, 그때 썼던 코드를 최대한 활용해보겠습니다. 우선,..
2021.08.01 -
basic_rop_x86 풀이
문제에서 C 소스코드를 주네요? 분석해보겠습니다. 우선 initialize(), alarm_handler() 함수는 중요해 보이지 않으니 한 줄 해석만 하겠습니다. initialize() : buf 세팅, 30초 후에 alarm_handler() 함수에게 신호 전송 alarm_handler() : TIME OUT을 출력하며 프로그램 종료 그리고 read 함수로 buf를 0x400만큼 입력을 받으니 BOF가 발생합니다. write로는 read로 입력받은 buf를 출력해줍니다. 문제 정보를 보면 NX가 걸려있으니 쉘코드는 사용하지 못하겠네요. 문제 이름이 rop니까 ROP로 풀어보도록 하겠습니다. 우선 필요한 가젯을 모아보겠습니다. read와 write는 들어가는 인자가 3개니까 pop pop pop 가젯이..
2021.07.31