본문 바로가기
  • Tried. Failed. Logged.
728x90

드림핵29

DreamHack - CTF에 유용한 도구 모음(드림핵 툴즈) https://tools.dreamhack.games/main dreamhack-tools tools.dreamhack.games 2023. 9. 7.
DreamHack - Return to Shellcode 풀이 r2s.c // Name: r2s.c // Compile: gcc -o r2s r2s.c -zexecstack #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int main() { char buf[0x50]; init(); printf("Address of the buf: %p\n", buf); printf("Distance between buf and $rbp: %ld\n", (char*)__builtin_frame_address(0) - buf); printf("[1] Leak the canary\n"); printf("Input: "); fflush(stdout); read(0, buf, 0x1.. 2023. 5. 1.
DreamHack - Return Address Overwrite rao.c // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main() { char buf[0x28]; init(); printf("Input: "); scanf("%s", buf); return 0; } 버퍼의 사이즈는 0x28(40 bytes)이며, get_shell() 함수로 return 하.. 2023. 4. 30.
DreamHack - basic_exploitation_001 풀이 checksec으로 파일 보호 기법들 확인 NX(No-eXecute) 보호 기법이 활성화되어 있으므로, 쉘 코드는 실행되지 않지만, Stack Canary가 활성화되지 않은 것으로 보아 Return Address Overwrite에 취약하다는 것을 알 수 있다. basic_exploitation_001.c 분석 #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); } vo.. 2023. 4. 25.
DreamHack - login-1 풀이 관리자 레벨 유저 아이디 찾기 http://host3.dreamhack.games:20947/user/1 = MAXRESETCOUNT: 이렇게 작성했으면 이런 취약점은 없었을 것. 서버 에러 500을 이용 신규 계정을 만들게 되면 resetCount 영역에는 NULL이 생기게 되면서 아래의 resetCount = resetCount + 1 구문에서 오류가 발생한다. 결국 리셋 카운트는 증가 못한 채 서버 측 에러(500)가 발생한다. updateSQL = "UPDATE user set resetCount = resetCount+1 where idx = ?" cur.execute(updateSQL, (str(user['idx']))) msg = f"Wrong BackupCode ! Left Count : .. 2023. 3. 27.
DreamHack - node-serialize (nodejs 직렬화 취약점) 풀이 node-serialize 취약점 예시 var serialize = require('node-serialize'); var x = { rce : function(){ require('child_process').exec('echo serialize exploited!', function(error, stdout, stderr) { console.log(stdout) }); }(), } serialize.serialize(x); var y = '{"username": "guest", "country": "Korea", "exec": "_$$ND_FUNC$$_function(){ require(\'child_process\').exec(\'echo unserialize exploited!\', functio.. 2023. 3. 27.
Dreamhack - 워게임, Mango 풀이 https://dreamhack.io/wargame/challenges/90/ Mango Description 이 문제는 데이터베이스에 저장된 플래그를 획득하는 문제입니다. 플래그는 admin 계정의 비밀번호 입니다. 플래그의 형식은 DH{...} 입니다. {'uid': 'admin', 'upw': 'DH{32alphanumeric}'} Reference Serv dreamhack.io NOSQL Injection에 관한 문제다. 페이지로 들어가니깐 다짜고짜 /login에서 로그인을 하라고 뜬다. 주소에 복사 붙여넣기를 해보니 guest로 로그인이 됐는지 화면에는 guest만 뜸 만약에 uid 값으로 admin을 주게 되면 페이지에는 filter라고 뜨게 된다. 문제에서 제공하는 서버 파일을 확인해보면 .. 2021. 12. 9.
Dreamhack - 워게임, rev-basic-2 풀이 https://dreamhack.io/wargame/challenges/16/ rev-basic-2 Reversing Basic Challenge #2 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io 이번에는 배열을 비교해가면서 내가 입력한 문자열이 장답 배열이 가지고 있는 문자와 똑같은지를 비교하는 원리였다. 이렇게 주석을 적어가면서 하면 이해하기가 쉽다. 프로그램이 계속해서 참조하는 저 배열의 주소를 덤프 창에서 따라가 보았더니 "Comp4re_the_arr4y"라고 배열이 각 4바이트 떨어진 간격으로 저장이 되어있었다. 그렇기 때문에 cmp .. 2021. 12. 3.
Dreamhack - 워게임, rev-basic-1 풀이 https://dreamhack.io/wargame/challenges/15/ rev-basic-1 Reversing Basic Challenge #1 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io rev-basic-0번과 비슷한 구조로 짜여있으며, 다만 다른 점은 rev-basic-0은 strcmp로 "문자열의 비교"로 두 문자가 일치한지를 판단하였으면, rev-basic-1은 "문자의 비교"로 한글자 한글자씩 사용자 입력 문자와 정답을 비교했다. 주석 부분을 다 맞춰보면.. "Compar3_the_ch4ract3r"라는 문자열이 나온다. 2021. 12. 1.
Dreamhack - 워게임, rev-basic-0 풀이 https://dreamhack.io/wargame/challenges/14/ rev-basic-0 Reversing Basic Challenge #0 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출 dreamhack.io 문제의 실행파일을 실행시키니 사용자에게 입력을 받으며, 아무 글자를 입력하니 Wrong을 출력하고 바로 꺼져버립니다. 목표는 알맞은 정답을 입력해서 Correct를 출력시키는 것이 목표입니다. 문제의 실행파일을 디버거에 넣어 실행시켜 F9를 눌러 엔트리 포인트로 이동해줍니다. 코드를 한번에 실행시키지 않고 한줄한줄씩 코드를 실행시켜 콘솔 창이 변화하는.. 2021. 11. 30.
Dreamhack - 워게임, web-misconf-1 https://dreamhack.io/wargame/challenges/45/ web-misconf-1 기본 설정을 사용한 서비스입니다. 로그인한 후 Organization에 플래그를 설정해 놓았습니다. Reference Server Side Basic dreamhack.io 로그인 페이지에서 admin/admin으로 로그인을 해보니 로그인이 성공했다. 그리고 Settings로 이동해서 Organization에 대한 설정 값을 찾아보았더니 플래그 값이 있었다. "초기 계정 설정은 매우 위험하다."라는 위험성을 알려주는 문제인 거 같다. 가정용 공유기들도 이와같은 이슈가 많았다. 2021. 11. 30.
Dreamhack - 워게임, command-injection-1 https://dreamhack.io/wargame/challenges/44/ command-injection-1 특정 Host에 ping 패킷을 보내는 서비스입니다. Command Injection을 통해 플래그를 획득하세요. 플래그는 flag.py에 있습니다. Reference Introduction of Webhacking dreamhack.io Ping 페이지로 들어가면 아이피를 입력하는 폼이 보입니다. 127.0.0.1을 넣고 submit을 시켜보니, Ping의 결과가 출력이 되어 나옵니다. 아이피를 전달하여 시스템 명령어를 실행시키는 모양입니다. ping 말고도 다른 명령어를 실행시켜보기 위해서 ;(세미콜론)을 삽입시켜주었습니다. 하지만 요청한 형식과 일치시키라는 경고문이 뜨게 되는데, 이는 .. 2021. 11. 24.
728x90