-
[ 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값과 비교할 랜덤값을 임시파일에 써놓는 역할을 하..
-
Syscall 가젯이 없을 때공부정리 2019. 3. 6. 04:06
Pwnable문제를 풀다보면 syscall로 익스를 해야될 때가 있다. 딱 언제라고 예를 들기는 어렵지만, 여러가지 제한들이 걸려있는 상황이 그렇다.RTL이 불가능할 때? 이 때 제일 많이 사용했던 것 같다. 하지만, Syscall_gadget마저 제한을 둔 문제들이 종종 있다.이 때, Libc에 있는 syscall가젯의 하위 1Byte를 GOT_Overwrite해서 syscall을 사용할 수 있다.[ find "\x0f\x05"(syscall) ]x64의 시스템콜 opcode인 "\x0f\x05"를 검색해보면 Libc에 위치한 syscall가젯들이 대략 573개 정도 나온다.여기서 내가 syscall가젯으로 Overwrite할 함수에 위치한 syscall을 찾아야 한다. [ read_syscall ]빨..
-
Return-to-Csu 기법 정리공부정리 2019. 3. 5. 23:47
포너블 문제를 풀 때, 64Bit 바이너리가 까다로운 이유가 바로 'Gadget' 때문이다. 64Bit의 Calling Convention은 Fastcall로 호출된 함수에 인자를 레지스터로 전달한다.이 때문에 Exploit을 구성할 때도 [POP RDI]와 같은 가젯이 반드시 필요하다. 이러한 특이점 때문에 문제에서 가장 흔하게 볼 수있는게 '가젯 제한'이다.이 상황에서 EDI,RSI,RDX 를 구성할 수 있는 방법이 있는데, 바로 Return_to_csu기법이다.[ Return to csu란? ]ELF바이너리를 IDA와 같은 디버깅도구로 열어보면, __libc_csu_init( )를 볼 수 있다.이 함수가 하는일은 바이너리의 _start( )를 호출하는 함수인 gmon_start( )를 호출하는 역할..
-
Meepwn 2018 White snow, Black shadow WriteupSystem/CTF 2019. 3. 2. 22:06
2018년 7월 Meepwn CTF에서 Forensic으로 출제된 문제다. [ 문제 ]파일이 하나 주어지고, 압축을 풀면 아래와 같은 이미지 파일을 볼 수 있다. [ evidence.jpg ]오.. 명탐정 코난 뭔가 대게 이런 이미지 파일 문제들은 매직넘버로 장난친 경우가 많다. [ binwalk ]binwalk로 확인해보면, 그림파일 안에 JPEG말고 ZIP도 존재하는 것을 확인할 수 있다. 그림 파일의 확장자는 .JPG로 Header는 'FF D8 FF E0' Footer는 'FF D9'로 구성되어 있다. 그림파일의 데이터는 Footer(FF D9)까지만 유효하기 때문에, 그 뒤는 어떤 데이터가 있더라도그림파일에는 영향이 없다. 따라서, HxD같은 바이너리편집기로 Footer시그니처를 찾아보면뒷 쪽에..