pwnable(17)
-
[CTF write up] LINE CTF 2023 - Hackatris : ncusre.h Tetris pwn
Dice CTF 2023의 zelda와 마찬가지로 ncurse.h 라이브러리로 제작된 테트리스 게임이다. zelda 처럼 ncusre.h FSOP Exploit이 필요한 문제는 아니었고, 단순 버퍼오버플로우 취약점이었지만 ncurse.h 라이브러리로 짜여진 프로그램들 특유의 괴상한 인풋 / 아웃풋 때문에 고생했다. Like zelda in Dice CTF 2023, it is a Tetris game made with the ncurse.h library. It was not a problem that required ncusre.h FSOP Exploit like zelda, it was a simple buffer overflow vulnerability, but I suffered from stra..
2023.03.26 -
[CTF write up] Kalmar CTF 2023 - mjs : Baby Open-Source Exploiting
https://github.com/mde/ejs GitHub - mde/ejs: Embedded JavaScript templates -- http://ejs.co Embedded JavaScript templates -- http://ejs.co. Contribute to mde/ejs development by creating an account on GitHub. github.com 무려 함수를 raw pointer로 저장해서 정수랑 연산할 수 있는 엄청난 Vulneranilty(?) or Feature(?)가 존재한다. 패치도 안된 것으로 보인다(?) There is a huge Vulnerability(?) or Feature(?) that can store a function as a raw ..
2023.03.06 -
[CTF write up] Dice CTF 2023 - Zelda : FSOP in ncurse.so lib
Dice CTF에서 출제된 1솔브 문제다. 푸는 방법은 완벽하게 구상했지만 remote로 페이로드가 보내지지 않아서 결국 시간내로 풀지는 못했다. 첫번째 취약점은 비동기적으로 동작하는 wgetch를 여러번 반복하는 형식으로 인풋을 받는다는 것이다. 버퍼에 여러 값을 한번에 보낼 수 없는 키보드 조작으로는 문제없이 프로그램이 동작하지만, pwntools나
2023.02.08 -
[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