분류 전체보기(66)
-
Chromium V8 Exploitation
보호되어 있는 글입니다.
2023.02.04 -
[CTF write up] WAcon CTF 2022 Qual - superunsafeJIT : Super ez Rust Pwn
fn compile(bytecode: &[u8], data_memory: &memory::Memory) -> Result { let mut function_table = HashMap::new(); function_table.insert("deoptimize".to_string(), 0xdeadbeef); let pl1 = bytecode::TranslationUnit::new(bytecode)?; println!("[main::compile] pl1 = `{}`", pl1 ); let pl2 = vasm::TranslationUnit::new(&pl1, &data_memory, &function_table)?; println!("[main::compile] pl2 = `{}`", pl2 ); let p..
2023.02.01 -
[CTF write up] idek CTF 2023 - Sprinter : Wierd Format String Bug
int vuln() { size_t len; // rax char buf[264]; // [rsp+0h] [rbp-110h] BYREF unsigned __int64 v3; // [rsp+108h] [rbp-8h] v3 = __readfsqword(0x28u); printf("Enter your string into my buffer, located at %p: ", buf); fgets(buf, 256, stdin); len = (size_t)strchr(buf, 'n'); if ( !len ) { len = strlen(buf); if ( len
2023.01.16 -
[CTF write up] Tet CTF 2023 - mailService : Logical bug & Mem corruption PWN
mailclient와 mailserver라는 바이너리가 있으며 서로 통신하며, 파일을 생성하고 읽는다. 가장 눈에 띄는 취약점은 다음과 같이 콘텐츠 사이즈를 int 형으로 검사한다는 것이다. 음수 값을 넣으면 2048이 넘는 사이즈 값을 입력할 수 있게 된다. 해당 사이즈 값 4자리는 파일내에 같이 저장되며, 메일을 읽을때 해당 사이즈 값을 바탕으로 파일에서 값을 읽는다. 다음은 파일을 읽는 부분이다. 파일에 저장된 4자리 사이즈 값을 읽고 그만큼 read / write를 한다. content_buffer는 2048 사이즈의 지역변수이기 때문에 위 취약점을 이용하여 사이즈 값을 음수로 넣으면 스택 오버플로우가 발생한다. 하지만 메모리 보호 기법이 전부 걸려있기 때문에 카나리 검증으로 익스플로잇을 할 수 ..
2023.01.03 -
[CTF write up] SECCON CTF 2022 Qual - Babyfile : Hard FSOP Challenge
int __cdecl main(int argc, const char **argv, const char **envp) { int idx; // eax char offset; // [rsp+7h] [rbp-9h] FILE *fd_null; // [rsp+8h] [rbp-8h] alarm(0x1Eu); write(1, "Play with FILE structure\n", 0x19uLL); fd_null = fopen("/dev/null", "r"); if ( fd_null ) { fd_null->__pad2 = 0LL; while ( 1 ) { idx = menu(); if ( idx == 2 ) { write(1, "offset: ", 8uLL); offset = getint(); if ( offset < ..
2022.11.21 -
[CTF write up] SSTF 2022 - Riscy : Easy RISC-V ROP (Samsung CTF)
RISC-V 아키텍쳐로 컴파일된 바이너리와 risc-v qemu 바이너리 파일이 주어진다. 개인적으로 멀티아키텍쳐 문제들을 정말 싫어하지만 이번에는 주최측에서 바이너리 형태에 qemu 바이너리 파일을 주었기에 상당히 재미있게 풀었다. 바이너리는 NX만 걸려있으며 굉장히 단순한 오버플로우 취약점이 존재한다. 쉬워보이지만 아래와 같은 문제가 존재한다. 1. RISC-V에 대한 한글 레퍼런스가 거의 없고 영어 레퍼런스도 대부분 논문일 정도로 마이너함. 2. RISC-V의 ROP 가젯을 자동으로 찾아주는 툴이 없음. 일단 risc-v의 동작 방식은 상당히 간단하고 ROP 역시도 매우 간단한다. 대부분의 경우가 arm과 유사한데, a0~ 으로 시작하는 레지스터들이 존재하고 해당 레지스터들을 통해 인자를 전달한다...
2022.08.23