System
-
[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값과 비교할 랜덤값을 임시파일에 써놓는 역할을 하..
-
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시그니처를 찾아보면뒷 쪽에..
-
[ Rookiss ] Simple LoginSystem/Pwnable.kr 2019. 1. 17. 15:17
[ Binary info ]32Bit 바이너리이며, 보호기법은 Canary와 NX Bit가 적용되어 있다. 특이점으로는 Statically link방식을 사용하기 때문에 RTL과 같이 공유 라이브러리를 이용하는 공격 기법은 사용이 불가능하다.따라서, 바이너리안에 존재하는 함수들을 Chaining하는 식으로 페이로드를 구성해야 한다. [ Binary Execute ]바이너리를 실행하면 입력값을 받는데 길이값을 크게 주면 'Wrong Length'라는 경고 메시지를 출력한다.특정 길이값을 주면 입력값에 대한 hash값을 출력하는데, 이때 Segmentation Fault가 발생한다.이 부분을 포인트로 잡고 IDA 디버깅을 해보도록 하자[ Debugging#1 ]main( )를 먼저 보면 실행 때 봤던 "Au..
-
TUCTF2018 lisa WriteupSystem/CTF 2019. 1. 14. 02:37
[ Binary Info ]32Bit 바이너리이며, shared object으로 PIE가 적용되어 있다.PIE와 NX를 제외한 제약사항이 없기 때문에개인적으로 PIE를 처음 접한다면 입문용 문제로 괜찮다고 생각한다. ( 로컬서버에서는 같은 디렉터리에 password와 flag파일을 만들어줘야 합니다. ) 문제의 난이도는 PIE를 제대로 이해한 사람에게는 쉬웠을 것이고나처럼 PIE가 익숙치 않은 사람에게는 어렵게 느껴졌을 것이다.따라서, 무작정 풀다가 어려움을 느끼고 라이트업을 보러오신 분들은 [PIE 보호기법 정리] 를 먼저 보시고다시 한번 풀어보는 것을 추천드리고 싶다! [ Binary 실행 ]바이너리를 실행하면 주소 하나를 릭해준다.그리고 두 번의 입력을 받고 프로그램이 종료된다.대충 이렇게 흐름을 ..
-
2018 CCE Qual Writeup - note [pwn]System/CTF 2018. 10. 2. 05:16
[ Binary Info ]# Binary : 64Bit ELF# Full RELRO# No Canary# NX Enable# PIE Enable [ Binary Execute ]- 바이너리를 실행하면, 다른 note 문제들 처럼 추가/삭제/보기/실행 메뉴를 출력해준다.IDA로 정적분석을 해보자 [ 정적분석 ]- 바이너리의 main( )부분이며, Hidden Menu는 따로 존재하지 않는다. [ Delete_note( ) ]- add_note( )에서 malloc( )으로 동적할당을 하지만, Delete( )때 Free를 하지 않는다. 따라서, Use After Free를 이용한 문제는 아닌 것 같다. [ Execute_note( ) ]- 취약점은 Execute_note( )에서 발생한다.Execute_..
-
CTF Tools 정리System/CTF 2018. 9. 30. 04:45
[ One gadget ] Usage : one_gadget [libc_binary]libc에서 한번에 쉘을 따주는 위치의 Offset을 구해서 출력해준다.rax == NULL / [rsp+0x30] == NULL과 같은 제약조건들만 맞춰주면 된다. RET에 libc_base+oneshot_offset값을 덮어주면 쉘이 짠! [ XROP ] Usage : xrop -r [arch] -b [bit] [Binary] ARM, PPC, MIPS 등의 Gadget들을 찾아주는 툴이다.ELF에서의 ROP_gadget이라고 보면 된다. [ qemu ]Usage : ./qemu-arm-static -L [Library_Directory] [Binary]ARM바이너리를 ELF아키텍쳐에서 실행 가능하게 해주는 툴이다.c..