Wargame CTF/소수전공(5)
-
[2021/1학기/선린/시스템해킹/소수전공] BaskinRobins31 - Write Up
1~3의 숫자를 번갈아 말하면서 31를 말하면 지는 미니게임! 문제 IDA 디컴파일 int __cdecl main(int argc, const char **argv, const char **envp) { unsigned int v3; // eax unsigned int v5; // [rsp+8h] [rbp-8h] _BOOL4 v6; // [rsp+Ch] [rbp-4h] setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); v3 = time(0LL); srand(v3); v5 = 31; v6 = 0; puts("### This game is similar to the BaskinRobins31 game. ###"); puts("### The one tha..
2021.08.01 -
[2021/1학기/선린/시스템해킹/소수전공] rop64 v2 - Write Up
문제 IDA 디컴파일 int __cdecl main(int argc, const char **argv, const char **envp) { __int64 buf; // [rsp+0h] [rbp-10h] __int64 v5; // [rsp+8h] [rbp-8h] buf = 0LL; v5 = 0LL; write(1, "Hell, World\n", 0xCuLL); read(0, &buf, 0x100uLL); return 0; } x64 문제.. buf변수는 총 0x10byte를 할당받았지만, 입력은 0x100byte 만큼 입력받으므로, BOF 발생 명령어 : checksec 파일이름 NX 보호기법이 걸려있으므로, 쉘코드로는 불가능합니다. 흠..v5 변수는 왜 선언되었을까.. 딱히 특별하진 않으므로.. ROP..
2021.08.01 -
[2021/1학기/선린/시스템해킹/소수전공] ropasaurusrex - Write Up
문제 IDA 디컴파일 #main함수 ssize_t __cdecl main() { sub_80483F4(); return write(1, "WIN\n", 4u); #sub_80483F4 함수 ssize_t sub_80483F4() { char buf; // [esp+10h] [ebp-88h] return read(0, &buf, 0x100u); } x86 문제로.. sub_80483F4 함수에서의 read는 입력을 0x100 만큼 입력받지만 buf의 크기는 0x88이므로, BOF 발생. NX 보호기법이 걸려있으므로, 쉘코드로는 불가능합니다. 딱히 특별한 것은 없으므로, ROP를 이용하여 문제를 풀어나가겠습니다. 분석 1. BUF, SFP를 채워주고, write@plt , write@got 를 이용하여 실제..
2021.08.01 -
[2021/1학기/선린/시스템해킹/소수전공] rop32 v2 - Write Up
문제 IDA 디컴파일 #main함수 int __cdecl main(int argc, const char **argv, const char **envp) { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); vuln(); try_to_win(); return 0; } #vuln 함수 int vuln() { unsigned int v0; // eax int buf[8]; // [esp+0h] [ebp-24h] v0 = 0; do { buf[v0] = 0; ++v0; } while ( v0 < 8 ); puts("Input me : "); read(0, buf, 0x3Cu); return 0; } #try_to_win 함수 int try_to_win() { int bu..
2021.08.01 -
[2021/1학기/선린/시스템해킹/소수전공] rop32 - Write Up
문제 IDA 디컴파일 #main 함수 int __cdecl main(int argc, const char **argv, const char **envp) { setvbuf(_bss_start, 0, 2, 0); printf("ROP 32bit : "); return vuln(); } #vuln 함수 ssize_t vuln() { char buf; // [esp+Eh] [ebp-3Ah] return read(0, &buf, 0x100u); } x86 문제로.. buf변수는 총 0x3Abyte를 할당받았지만, 입력은 0x100byte 만큼 입력받으므로, BOF 발생 NX 보호기법이 걸려있으므로, 쉘코드로는 불가능합니다. 딱히 특별한 것은 없으므로, ROP를 이용하여 문제를 풀어나가겠습니다. 분석 1. BUF..
2021.08.01