분류 전체보기
-
gdb로 fork된 자식프로세스 디버깅하기공부정리 2019. 4. 6. 13:02
CTF를 풀다보면 Server바이너리에서 fork( )를 사용하는 경우가 많다. 이때 gdb로 바이너리를 잡으면 자식프로세스가 아닌 부모프로세스를 따라가게 된다. 우리가 분석해야 하는건 자식프로세스 이기 때문에, ' set follow-fork-mode child '를 사용하면 디버거가 자식프로세스를 따라가면서 디버깅할 수 있게 된다. [ set follow-fork-mode child ] Angrydoraemon은 Server바이너리로 fork( )로 자식프로세스를 생성하여 Client접속을 받는다. gdb에서 ' set follow-fork-mode child '를 입력한 뒤, run으로 바이너리를 실행시키면 접속 대기 상태가 된다. [ fork( ) 생성 ] nc로 서버에 접속하면 디버거에서 접속을..
-
[ Rookiss ] Ascii_easySystem/Pwnable.kr 2019. 4. 5. 18:45
'Printable-ascii-only' Exploit payload 출력가능한 ASCII문자범위(0x21~0x7F)내에서 Payload를 작성해야 한다. [ Ascii_easy@pwnable.kr ] ascii_easy : 문제 바이너리 ascii_easy.c : 바이너리 소스파일 libc-2.15.so : 바이너리에 로드되는 라이브러리 intended_solution.txt : 문제를 풀면 확인할 수 있는 출제자가 의도한 풀이방법 [ Ascii_easy.c ] #include #include #include #include #include #include #define BASE ((void*)0x5555e000) int is_ascii(int c){ if(c>=0x20 && c
-
[ Rookiss ] AllocaSystem/Pwnable.kr 2019. 3. 24. 17:58
" Buffer Overflow를 예방하는 법에 대해서 알려주겠다. "고 한다. [ Alloca.c ]12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#include #include #include void callme(){ system("/bin/sh");} void clear_newlines(){ int c; do{ c = getchar(); }while (c != '\n' && c != EOF);} int g_canary;int check_canary(int canary){ int result = cana..
-
[ Toddler's Bottle ] asmSystem/Pwnable.kr 2019. 3. 9. 00:54
문제를 보면 Shellcode를 만들어서 익스하는 유형인것 같다. [ asm.c ]1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859#include #include #include #include #include #include #include #include #define LENGTH 128 void sandbox(){ scmp_filter_ctx ctx = seccomp_init(SCMP_ACT_KILL); if (ctx == NULL) { printf("seccomp error\n"); exit(0); } seccomp_rule_add(ctx, SCMP_A..
-
[ 500pts ] UnexploitableSystem/Pwnable.tw 2019. 3. 8. 18:35
pwnable.kr의 unexploitable보다 더 어렵게 만들었다고 한다. 딱히 뭐가 더 어렵다기 보다는 풀이방식이 서로 다르기 때문에 각 각의 매력이 있는 것 같다. [ File ]64Bit : FastcallDynamically Linked: 공유라이브러리 사용not stripped: 안티 디버깅 미적용 [ Mitigation ]Partial RELRO: GOT Overwrite 가능NX: 실행권한 없음 [ Gadget ] Exploit에 필요한 가젯도 없는 상태다.[ How to Exploit? ] 우선 인자구성에 필요한 가젯이 없기 때문에 ( pop rdi, rsi, rdx, ret )이럴 때는 'Return to csu'를 이용해서 인자들을 세팅해줄 수 있다. Exploit시나리오는 여러가지..
-
[Windows] ALMind 1day ExploitSystem/Windows 2019. 3. 8. 04:25
이전 글에 이어서 이번에는 Exploit을 하는 과정에 대해서 상세히 정리해보도록 하겠다.이전글>>[ESTSoft] ALMind 1day Analysis[ Mona.py ]mona는 Windows Exploit할 때 굉장히 유용한 툴이다.Linux에서 Pwntools같은 존재라고 생각하면 된다. mona는 외부 스크립트이기 때문에, 다운받아서 로드해줘야 한다.이 과정은 인터넷에 상세하게 있으니 생략하도록 하겠다. 자, 그럼 어떻게 Exploit할 수 있을까?먼저 ALMind의 Mitigation 상황을 확인해보도록 하자 [ Process Hacker ]Process Hacker로 확인해보면, 아무런 보호기법이 적용되어 있지 않다. 그렇다면 가장 단순하고 효과적인 쉘코드를 이용해 보도록 하자 쉘코드는 Po..
-
[Windows] ALMind 1day AnalysisSystem/Windows 2019. 3. 8. 01:13
BoB Windows Software Fuzzing&Exploit 수업에서ESTSoft사의 ALmind를 타겟으로 잡고 Fuzzing&Exploit을 진행했다.그때 내용을 다시 상기시키면서 Exploit과정을 정리해봤다.[Crash파일 & 정리문서][ ALmind Version ]우선 1day Exploit을 진행할 제품의 버전은 1.32버전이다. ALmind Lite버전으로 무료로 제공했을 때 사용하던 제품인 것 같다. [ 취약점 패치 ]1.32버전에는 Stack Overflow 취약점이 존재한다. 1.3 ~ 1.71까지 존재했던 걸 보면 꽤 오랫동안 발견하지 못했나보다. 취약점은 발생하는 이유는 아래와 같다.'.emm'이라는 알마인드 확장자에서 파일이름의 길이값을 관리하는 헤더부분을 제대로 체크하지 ..
-
[ Rookiss ] otpSystem/Pwnable.kr 2019. 3. 6. 05:33
OTP시스템을 만들었는데, 자기가 실수한게 있는지 확인 좀 해달라는 문제다. ssh로 접속하는걸 보니, 로컬에서 뭔가를 해야하는 'Local Exploit'문제의 가능성을 열어두고 풀도록 하자그리고 레이스컨디션이나 브루트포스로 푸는 문제는 아니라고 한다. [ Binary Code ]이것저것 여러가지 하는데 urandom에서 읽어온 값을 맞추면 쉘이 떨어지는 코드다. 여기서 눈 여겨봐야할 것은 '반환값 검사'의 유무다.겉으로 보기에는 철저하게 검사를 하고 있는 것 같지만, fwrite( )의 반환값은 검사하지 않는다.fwrite( )의 반환값은 정상적으로 실행됐을 경우 '출력한Byte' / 실패한 경우 -1을 반환한다. 해당 프로그램에서는 User_input값과 비교할 랜덤값을 임시파일에 써놓는 역할을 하..