전체 글

전체 글

    DeadSec CTF 2024 (Pwn)

    DeadSec CTF 2024 (Pwn)

    [ solved ]misc / Mic Check더보기그냥 echo 구현해주면 되는 문제from pwn import *context.log_level = 'debug'p = remote('34.134.200.24', 30373)for _ in range(100): p.recvuntil(b'> ') echo = p.recvuntil(b' ')[:-1] p.sendlineafter('>',echo)p.interactive() pwn / Super CPP Calculator더보기 int __cdecl __noreturn main(int argc, const char **argv, const char **envp){ calc_st calc; // [rsp+0h] [rbp-20h] BYREF ..

    ImaginaryCTF 2024 (Pwn)

    ImaginaryCTF 2024 (Pwn)

    [ solved ]pwn / imgstore더보기바이너리는 좀 긴데 리네이밍하면서 보니 취약한 부분은 한정되어 있었다.3번 메뉴인 sell 함수에서 fsb 트리거할 수 있고feedbeef 조건 맞춰주면 bof를 트리거할 수 있다. 근데 bof는 트리거 해도 fgets가 작동을 안한다.(왜 그런진 모르겠음) 그래서 그냥 리턴 주소를 원가젯으로 덮어서 쉘 땄다.unsigned __int64 sell(){ char v1; // [rsp+7h] [rbp-59h] BYREF int buf; // [rsp+8h] [rbp-58h] BYREF int fd; // [rsp+Ch] [rbp-54h] char title[72]; // [rsp+10h] [rbp-50h] BYREF unsigned __int64 v..

    DownUnderCTF 2024 (Pwn)

    DownUnderCTF 2024 (Pwn)

    [ solved ] pwn / vector overflow더보기#include #include #include #include char buf[16];std::vector v = {'X', 'X', 'X', 'X', 'X'};void lose() { puts("Bye!"); exit(1);}void win() { system("/bin/sh"); exit(0);}int main() { char ductf[6] = "DUCTF"; char* d = ductf; std::cin >> buf; if(v.size() == 5) { for(auto &c : v) { if(c != *d++) { lose(); ..

    [Dreamhack][CTF Season 6] note write-up

    보호되어 있는 글입니다.

    [hxpCTF 2020] kernel-rop (with write-up) (2)

    지난 글(https://ssongkit.tistory.com/820)에 이어 남은 보호 기법인 KPTI, KASLR, FG-KASLR을 우회하는 방법을 배워보자. 1-1. Bypass KPTI: KPTI trampolineKTPI를 우회하는 방법 3가지를 공부해보자. 첫 번째는 KPTI trampoline이라고 부르는 기술이다. 커널에 빌트인으로 존재하는 기능이기 때문에 주로 쓰인다고 한다. 심볼 이름은 "swapgs_restore_regs_and_return_to_usermode"이다. 다음과 같이 주소를 검색한 뒤 vmlinux로 확인해보면 다음과 같다. / # cat /proc/kallsyms | grep swapgs_restore_regs_and_return_to_usermodeffffffff8..