본문 바로가기

HackCTF67

(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.
[HackCTF] (Pwnable) ezshell 풀이 ezshell 힙공부를 미뤄둬서, hackctf 남은문제가 다 힙인줄알고 안풀었는데, 재밌는 쉘코딩문제도 있어서 풀어봐따. 저 쉘코드 50바이트 뒤에 내가 입력한 쉘코드를 strcat 으로 붙여서, xor 부터 실행해준다. 필터링하는 opcode 는 다음과 같다 \xb0 → mov r8, imm8 \x3b → execve call number \x0f05 → syscall syscall 필터링하는거는 syscall opcode 가 주어지니, jmp $- ~~ 으로 syscall 을 실행시킬 수 있다. al 에 mov 를 통해 값을 넣을 수 없으니, push/pop → inc 으로 우회할 수 있다. 하지만 rsp 를 0 으로 만드니 push/pop 을 사용할 수 없게된다. fs 세그먼트를 이용하면, rsp.. 2021. 10. 5.
[HackCTF] (Forensic) Let'S get it ! Boo*4 풀이 문제이름에서 볼 수 있듯이, LSB steganography 문제이다. stegsolve 툴로 lsb 를 추출할 수 있는데, RGB 값으로는 안나온다.. 그래서 다 해보다가 BGR로 하니까 나오는 것을 확인할 수 있다. HackCTF{0U] .B10C 0xCDA9 0xBD84 0xD788 0d.8AC000 H.8CE58 0xC788 0xB294 0xC874 0xC7AC 0v.8C57C} 다음과 같은 문자열이 나오는데, 이상하게 생겼다. 이것은 플레그가 아닐테고, 디코딩 해봐야 할 것 같다. 0xXXXX 와 같이 나오는데, 이 문자들만 모아서 unicode 디코딩해보자. 5글자이상 붙어있는 글자 빼고 디코딩을 해봤다. 0x 제외하고, 4글자식 잘라서 넣으면 되더라. 2021. 6. 1.