hackctf
-
[hackctf] rtlcore 풀이hackctf 2021. 9. 8. 23:32
1. 문제 문제 파일의 보호기법은 NX bits가 걸려있다. ida를 사용하여 main 함수를 확인해보니 사용자로부터 입력받은 문자열 s를 check_passcode 함수의 인자로 넣어준 후 함수의 반환값이 hashcode와 같을 시 특정 문자열을 출력한 후 core 함수를 실행한다. check_passcode 함수는 사용자로부터 입력받은 문자열이 위치한 주소에서 4바이트씩 읽어와서 v2에 더해주는 반복문을 거친 뒤 v2를 반환해준다. core 함수를 확인해보니 printf 심볼의 주소를 출력해주고 read 함수를 사용하여 buf에 입력값을 받는데 buf의 크기는 0x3e 인데 read 함수가 입력 받을 수 있는 문자열의 길이는 0x64인 것으로 보아 여기서 buffer overflow 취약점이 발생한다..
-
[hackctf] g++pwn 풀이hackctf 2021. 8. 12. 21:34
1. 문제 보호기법은 NX bit가 걸려있다. 코드를 확인해보니 main함수에서는 vuln() 함수를 호출하고 끝난다. vuln 함수 코드를 확인해보니 fgets 함수를 사용하여 사용자로부터 입력 받은 값을 s에 넣어주고 이를 input에 넣어준다. 이후 replace 함수를 호출하고 마지막에 strcpy 함수를 사용해 v0를 s로 복사한 후 printf로 출력해준 뒤 종료한다. std::string *__stdcall replace(std::string *a1, std::string *a2, std::string *a3) { int v4; // [esp+Ch] [ebp-4Ch] char v5[4]; // [esp+10h] [ebp-48h] BYREF char v6[7]; // [esp+14h] [ebp..
-
[hackctf] rtl_worldhackctf 2021. 8. 9. 20:32
문제 파일에는 nx bit 보호기법이 걸려 있습니다. int __cdecl main(int argc, const char **argv, const char **envp) { int result; // eax int v4; // [esp+10h] [ebp-90h] char buf; // [esp+14h] [ebp-8Ch] void *v6; // [esp+94h] [ebp-Ch] void *handle; // [esp+98h] [ebp-8h] void *s1; // [esp+9Ch] [ebp-4h] setvbuf(stdout, 0, 2, 0); handle = dlopen("/lib/i386-linux-gnu/libc.so.6", 1); v6 = dlsym(handle, "system"); dlclose(h..
-
[hackctf] yes_or_nohackctf 2021. 7. 29. 01:10
문제 문제 파일을 다운받아 실행해보니 Show me your number~! 라는 문구를 출력하고 사용자로부터 입력을 받습니다. 1234 를 입력하니 All I can say to you is "do_system+1094" 를 출력해주며 종료합니다. 아이다를 사용하여 코드를 확인해보겠습니다. int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // eax int v4; // eax int v5; // ecx int v6; // eax int v7; // eax char s; // [rsp+Eh] [rbp-12h] int v10; // [rsp+18h] [rbp-8h] int v11; // [rsp+1Ch] [rbp-4h] ..
-
[hackctf] rtchackctf 2021. 7. 26. 01:52
이번에는 이전에 dreamhack에서 basic_x64_rop 문제를 풀면서 익혔던 rtc 기법을 복습할겸 hackctf의 rtc 문제를 풀게 되었습니다. gdb-peda$ disas Dump of assembler code for function main: 0x00000000004005f6 :push rbp 0x00000000004005f7 :mov rbp,rsp => 0x00000000004005fa :sub rsp,0x40 0x00000000004005fe :mov rax,QWORD PTR [rip+0x200a4b] # 0x601050 0x0000000000400605 :mov ecx,0x0 0x000000000040060a :mov edx,0x2 0x000000000040060f :mov esi,..