전체 글

전체 글

    [CTF-D] 저는 플래그를 이 파일에.. 풀이 (100p)

    풀이 저는 플래그를 이 파일에 넣는 것에 긍정적입니다. 저를 위해 찾아 줄 수 있나요? KEY Format : ABCTF{(key)} just_open_it.jpg 파일 하나가 주어진다. 그냥 리눅스 strings 명령어를 이용해 flag를 얻을 수 있었다.

    [CTF-D] 제 친구의 개가 바다에서… 풀이 (100p)

    풀이 제 친구의 개가 바다에서 수영을 하다가 플래그를 발견했는데 제게 주지 않습니다. 여기서 구해 줄 수 있습니까? hidden.jpg 파일 하나가 주어진다. 쉬운 문제인지라, 다른 기법들은 생각 안 하고 이미지 파일에 flag가 있을 것으로 추측했다. 개 얼굴 부분을 확대해봤다. jump라는 글씨가 희미하게 보인다. 파워포인트를 이용해 사진의 선명도와 대비를 바꿔봤다. flag가 나왔다.

    [HackCTF] RTL_Core 풀이 (250p)

    풀이 Arch: i386 - 32 - little RELRO : Partial RELRO Stack : No canary found NX : NX enabled PIE : No PIE(0x8048000) 먼저 rtlcore을 실행해보자. 저번 문제와 마찬가지로 패스코드 인증 문제이다. IDA를 이용해 슈도코드를 확인해보자. main Pseudocode int __cdecl main(int argc, const char **argv, const char **envp) { char s; // [esp+Ch] [ebp-1Ch] setvbuf(_bss_start, 0, 2, 0); puts(&::s); printf("Passcode: "); gets(&s); if ( check_passcode(&s) == ha..

    [HackCTF] Random Key 풀이 (200p)

    풀이 Arch: amd64 - 64 - little RELRO : Partial RELRO Stack : No canary found NX : NX enabled PIE : No PIE(0x400000) 먼저 random을 실행해보자. 단순한 Key값 검증 프로그램인가? IDA를 이용해 슈도코드를 확인해보자. int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { unsigned int v3; // eax int v4; // [rsp+0h] [rbp-10h] int v5; // [rsp+4h] [rbp-Ch] unsigned __int64 v6; // [rsp+8h] [rbp-8h] v6 = __readfsqword(0x..

    [HackCTF] 1996 풀이 (200p)

    풀이 Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) 먼저 1996을 실행해보자. 환경변수를 입력받고, 그 값을 알려주는 코드같다. 이 문제는 슈도코드를 볼 필요도 없이, 그냥 간단한 bof로 풀 수 있다. 이게 왜 200점이지? 입력받는 주소는 rbp-410h이니까, 0x410 + SFP(8) + ret(spawn_shell) 해주면 끝이다. 1 from pwn import * 2 3 p = remote('ctf.j0n9hyun.xyz', 3013) 4 5 payload = '\x90'*0x410 6 payload += 'A'*8 7 payload += p64(0x0..

    [HackCTF] poet 풀이 (200p)

    풀이 Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) 먼저 poet을 실행해보자. 시를 적고, 저자를 적으면 점수를 준다. 입력은 무한 반복문으로 받는 듯하다. IDA를 이용해 슈도코드를 확인해보자. main Pseudocode int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { const char *v3; // rdi setvbuf(_bss_start, 0LL, 2, 0LL); v3 = s; puts(s); while ( 1 ) { get_poem(v3, 0LL); get_auth..

    [HackCTF] g++ pwn 풀이 (200p)

    풀이 Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000) 먼저 gpwn을 실행해보자. 문자열 하나를 받고, 그대로 출력하는 건가? IDA로 슈도코드를 확인해보자. int __cdecl main(int argc, const char **argv, const char **envp) { vuln(); return 0; } main 함수에서는 바로 vuln 함수를 실행한다. int vuln() { const char *v0; // eax char s; // [esp+1Ch] [ebp-3Ch] char v3; // [esp+3Ch] [ebp-1Ch] char v4; // [esp+..

    [HackCTF] RTL_World 풀이 (200p)

    풀이 Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000) 먼저 rtl_world를 실행해보자. 아! 참고로 64bit linux로 실행하면 Segmentation fault가 뜬다. 호오.. System Armor와 Shell Sword를 갖고 있으면, Binary Boss를 죽일 수 있다고 한다. 대충 system 함수의 인자로 /bin/sh을 넘겨 문제를 푸는 방식인듯? IDA로 슈도코드를 확인해보자. 중요한 부분만 적도록 하겠다. Main Pseudocode char buf; // [esp+14h] [ebp-8Ch] case 5: printf("[Attack] > "..