#1. 문제 살펴보기 #2. 문제 분석하기 main 함수가 main 이였는데 int __cdecl main(int argc, const char **argv, const char **envp) { char buf[10]; // [rsp+6h] [rbp-1Ah] BYREF const char **v5; // [rsp+10h] [rbp-10h] int v6; // [rsp+1Ch] [rbp-4h] v6 = argc; v5 = argv; env_setup(argc, argv, envp); printf( "Thank you for you interest in applying to DiceGang. We need great pwners like you to continue our traditions and com..
2020-08-05 18:00 ~ 2020-08-06 18:00 이번에 동아리 내부 CTF를 24시간동안 진행하였으며, 해당 CTF를 진행하는 동안 풀었던 문제에 대한 write up입니다. kernel 관련 문제를 풀려고 파일을 다운받다가 VMware가 고장이 나서 절반 이상의 exploit code가 증발해버렸습니다 ㅠ 망할 Unknown !!! # sanity check 선착순 2등이다 ㄲㅂ # S-seccomp seccomp라길래 system함수 막아뒀을 거같아서 execve호출했다. # lyrics 문제의 링크로 가면 웹사이트에 영어가사가 도배되어있는데 개발자도구(단축키 F12)로 웹페이지소스를 보면 태그들 사이에 한글자씩 무언가 적혀있다 다모으면 flag완성 # bonus * 바이너리에 fop..
* 동아리 내부 CTF입니다 glibc-2.23 #1. 문제 살펴보기 출제자는 나다. 이번에 들어온 신입 20학번들을 위하여 MISC 수준의 난이도로 출제했다. 기본적으로 MISC답게 잡기술을 하나 첨가했다. 보호기법을 확인해보면 GOT 를 찾을 수 없다고 발생하며 Packer부분에 UPX를 통해 패킹되었다고 확인된다. IDA를 통해 보아도 upx에 대한 언급이 있다. 아마 적어도 의지가 있다면 발견했을 것이다. #2. 문제 분석하기 upx에 대해 인터넷에 찾아보면 언패킹할 수 있는 정보는 쉽게 찾을 수 있다. 그렇게 언패킹하게 되면 모든 보호기법이 걸린 상태로 확인할 수 있다. 하지만 해당 문제에서는 보호기법을 우회할 정도의 수준이 아닌 정말 기본적인 byte overflow를 이용한 문제이다 언패킹 ..
glibc-2.27 #1. 문제 살펴보기 동적으로 라이브러리를 로드하지 않으며, 정적으로 함수들을 내부에 적어두지 않았다 Linux 내부의 syscall 을 이용하여 read와 write를 사용한다 다음으로 대놓고 보이는 BOF 취약점이다 아마 ROP를 이용하여 풀것같다 그리고 ROP 를 위한 gadget 을 찾아보자 pop_rdi 같은 가젯들이 없다 ! #2. 문제 분석하기 21.11.28 Dreamhack send_sig 문제를 풀다가 다시 왔다 일반적인 ROP와 달리 의도적으로 gadget을 남겨두지 않아 ROP를 하기에 충분한 gadget이 없을 경우 흐름조작이 힘들다 하지만 syscall gadget이 있다면 일반적인 ROPgadget보다 훨씬 더 편리하게 레지스터 값들을 조작할 수 있다 레지스..
glibc-2.27 #1. 문제 살펴보기 GOT 값을 덮지 못하고 Stack 에 Canary 가 존재하며 Stack 에 쉘코드를 올려서 사용하지못함 + Data영역의 주소가 실행할 때마다 변하는 것을 확인할 수 있다. #2. 문제 분석하기 void __fastcall main(__int64 a1, char **a2, char **a3) { alarm(0x3Cu); setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); setvbuf(stderr, 0LL, 2, 0LL); puts("----------BABYTCACHE----------"); while ( 1 ) { switch ( comment() ) { case 1: add(); break; case ..