CTF write up(48)
-
[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] b01lers CTF 2023 - Transcendental : It is a misc not pwn :(
__int64 __fastcall main(int a1, char **a2, char **a3) { char op; // al char i; // dl int idx; // eax double reg[11]; // [rsp+0h] [rbp-78h] BYREF unsigned __int64 v8; // [rsp+58h] [rbp-20h] v8 = __readfsqword(0x28u); puts( "==============================================================\n" "== B01lers Calculator - Transcendental Figures edition 2023 ==\n" "=========================================..
2023.03.20 -
[CTF write up] WACon CTF 2022 Final - islands : Easy matrix multiplication rev
리버싱 공부하려고 처음으로 제대로 푼 리버싱 문제다. ida로 까보면 함수가 매우 여러게 있고 함수당 어셈블리가 들어있다. 별로 길지 않아서 하나씩 확인해서 로직을 분석하면 된다. array1 = [246, 0, 58, 0, 217, 0, 173, 0, 210, 0, 224, 0, 7, 0, 116, 0, 199, 0, 18, 0, 117, 0, 160, 0, 27, 0, 191, 0, 158, 0, 238, 0, 243, 0, 211, 0, 116, 0, 147, 0, 195, 0, 39, 0, 185, 0, 154, 0, 181, 0, 215, 0, 33, 0, 184, 0, 231, 0, 42, 0, 78, 0, 65, 0, 137, 0, 188, 0, 52, 0, 136, 0, 154, 0, 23..
2023.03.11 -
[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] ACSC CTF 2023 - re : tcache poisoning in Ubuntu 22.04
realloc만 쓸 수 있으며, 만들 수 있는 청크 크기에 제한이 걸려있다. realloc은 아래와 같은 동작을 하기 때문에 사실상 malloc, free 둘다 사용할 수 있다. realloc(0,size) -> malloc(size) realloc(ptr,0) -> free(ptr) 취약점은 realloc(ptr,0)로 free를 하였을때 size > mlist.size 조건문을 통과하지 않아서 mlist 변수에 포인터가 그대로 남는다는 것이다. 이때 해당 dangling 포인터에 대해 realloc(ptr,size) 함수를 실행하면 realloc의 반환값으로 ptr에 들어간 dangling 포인터가 그대로 반환된다. 하지만 실제로 해당 청크는 할당되지 않았기 때문에 그대로 bin list에 들어가 있..
2023.02.26 -
[CTF write up] Dice CTF 2023 - Zelda : FSOP in ncurse.so lib
Dice CTF에서 출제된 1솔브 문제다. 푸는 방법은 완벽하게 구상했지만 remote로 페이로드가 보내지지 않아서 결국 시간내로 풀지는 못했다. 첫번째 취약점은 비동기적으로 동작하는 wgetch를 여러번 반복하는 형식으로 인풋을 받는다는 것이다. 버퍼에 여러 값을 한번에 보낼 수 없는 키보드 조작으로는 문제없이 프로그램이 동작하지만, pwntools나
2023.02.08