dreamhack(23)
-
[ Dreamhack ] dirty stack
main int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { unsigned __int64 v3; // rbx unsigned __int64 v4; // [rsp+8h] [rbp-E8h] BYREF __int64 v5; // [rsp+10h] [rbp-E0h] BYREF unsigned __int64 v6; // [rsp+18h] [rbp-D8h] __int64 i; // [rsp+20h] [rbp-D0h] const char *v8; // [rsp+28h] [rbp-C8h] __int64 s[21]; // [rsp+30h] [rbp-C0h] BYREF unsigned __int64 v10; // [rsp+D8h] [..
2022.12.13 -
[ Dreamhack ] Zeroshot
https://dreamhack.io/wargame/challenges/426/?writeup_id=8822 ZeroShot 이 문제는 서버에서 작동하고 있는 서비스(ZeroShotV2)의 바이너리와 소스 코드가 주어집니다. 취약점을 익스플로잇해 셸을 획득한 후, “flag” 파일을 읽으세요. “flag” 파일의 내용을 워게임 사 dreamhack.io 문제를 풀며 배운점 - 여러번 aaw가 가능하지만 %d를 사용해서만 입력이 간능한 경우 최대 0xffffffff까지만 입력이 가능하기 때문에 원하는 주소가 4바이트보다 크다면 하위 4바이트 상위 4바이트 나눠서 입력을 주면 된다. - 함수 내부에서 movaps가 실행될 때 rsp가 0x10상태로 정렬되어야 한다. rsp를 정렬시키려면 해당 함수에서 got..
2022.11.27 -
[Dreamhack] house_of_spirit
https://dreamhack.io/wargame/challenges/54/?writeup_id=8611 house_of_spirit Desciption 이 문제는 작동하고 있는 서비스(houseofspirit)의 바이너리와 소스코드가 주어집니다. House of Spirit 공격 기법을 이용한 익스플로잇을 작성하여 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" dreamhack.io house of spirit 이란 임의의 주소를 해제하고 할당할 때 재 할당을 통해 임의 주소를 할당받아 원하는 주소에 값을 쓸 수 있게 하는 공격방식이다. 이 문제를 풀면서 주의할 점은 fake 청크를 해제할 때 tcache의 범위를 벗어나면 안된다 왜냐하면 tcache의 경우 속도를 위해 많은 시큐리티 ..
2022.11.01 -
Return to csu [Dreamhack basic_rop_x64]
dreamhack강의에서 return to csu 강의를 못 찾아서 이제까지 return to csu를 공부를 안 했는데 이번에 로드맵 복습을 진행하며 basic_x64_rop을 rtc를 통해 풀어봤다. https://dreamhack.io/wargame/challenges/29/?writeup_id=7999 기존 writeup에 추가했다. RTC란? rop을 할 때 원하는 가젯이 없을때도 rop을 할 수 있는 기법이다. ( 하지만 인자를 최대 3개까지만 할당할 수 있다. ) 위 사진은 __libc_csu_init 함수의 일부 어셈 코드이다. 이 부분만 사용할 것이다. 사진에서 볼 수 있듯이 0x400860에서 r13, r14, r15의 값을 rdx, rsi, edi에 넣어주는 것을 확인할 수 있다. 우..
2022.10.01 -
[ Dreamhack ] tcache_dup2
https://dreamhack.io/wargame/challenges/67/ tcache_dup2 Description 이 문제는 서버에서 작동하고 있는 서비스(tcache_dup2)의 바이너리와 소스 코드가 주어집니다. 취약점을 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일의 내용을 워게임 dreamhack.io 이 문제에서는 주의해야할 점이 있다. 바로 tc_idx가 낮은값을 갖지 않게 해야한다. 왜냐하면 tc_idx는 빈에 들어간 청크의 개수를 세는 녀석인데 0이면 tcache에 청크가 없다고 판단해서 할당할 때 tcache를 참조하지 않기 때문이다. double free 를 이용하여 쉘을 획득하기 위해서는 allocate를 총 3번해야한다. 1. 더블 프리 후 t..
2022.09.07 -
[Dreamhack] tcache_dup
https://dreamhack.io/wargame/challenges/60/ tcache_dup Description 이 문제는 작동하고 있는 서비스(tcache_dup)의 바이너리와 소스코드가 주어집니다. Tcache dup 공격 기법을 이용한 익스플로잇을 작성하여 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일 dreamhack.io 이 문제에서는 tcache에 관한 double free 보호기법이 존재하지 않은 라이브러리를 사용하기 때문에 key값을 조작하는 과정없이 바로 하면된다.
2022.09.07