(HackCTF) j0n9hyun’s secret writeup
int __cdecl main_(int argc, const char **argv, const char **envp) { __int64 v3; // rdx int v4; // edx int v5; // ecx int v6; // er8 int v7; // er9 int v9; // [rsp+Ch] [rbp-4h] setvbuf(off_6CA748, 0LL, 2LL, 0LL); setvbuf(off_6CA740, 0LL, 2LL, 0LL); setvbuf(off_6CA738, 0LL, 2LL, 0LL); top_secret = open("top_secret", 'r', v3); printf("input name: "); scanf("%s", &input, v4, v5, v6, v7); v9 = read(t..
2022. 2. 9.
[HackCTF] (Pwnable) pzshell 풀이
pzshell 위 쉘코드 + 내가입력한 opcode 8byte 를 붙여 xor 부터 실행시켜준다. 필터링하는 키워드는 \x0f\x05 이다. ezshell과 다른 점은, rdx 를 초기화하지 않고, si 에 0xdef1 을 넣어준다는 것 이다. 쉘코드+2 으로 점프하므로, rdx 에는 xor rbp,rbp 의 주소부터 저장되어있다. 그래서, xchg ? 으로 si 와 rdx 를 바꾼 뒤, read syscall 으로 쉘코드를 새로 입력받는다. 이 때. syscall 을 필터링하지 않으므로 자유롭게 사용할 수 있다. 또한 seccomp 설정에서, fork, vfork, clone, creat, ptrace, prctl, execve, execveat 가 필터링되어 있으므로, ORW 를 사용해 문제를 풀어야..
2021. 10. 6.