WinAFL Fuzzing

준비물 DynamoRIO WinAFL Visual Studio 2019 Fuzzing 순서 바이너리 분석 후, 퍼징할 함수가 export(dll)되어있거나 persistent mode로 퍼징 가능한지 판단 Fuzzing dll exported인 경우: Harness 작성 persistent mode로 퍼징 가능한 경우 afl-fuzz 인자값으로 해당 함수 offset 지정할 것 함수 내부에 파일을 open/close 여부 확인 후, 상위함수 사용 고려 Crash 분석 Fuzzing 더 읽기

삽질에 게시되었습니다

Flutter Reversing on Android

1. Flutter flutter란 dart언어를 사용하며 multi-platform 을 지원하는 native 앱 개발 프레임워크입니다. 내부적으로 아래와 같은 구조를 가지고 있습니다. 주로 dart는 UI를 구현하는데 사용되고, 추가적인 http 요청 및 SharedPreference와 같은 부분은 Flutter Engine에서 구현된 부분을 사용하도록 앱을 작성합니다. 이 때, Framework는 Dart VM으로 구현되어 있고 내부에서 Engine에 존재하는 함수를 호출하도록 되어있습니다. 더 읽기

stack canary 분석

1. 서론 32/64bit 환경에서 Stack Canary 기법이 걸려있는 것을 많이 볼 수 있다. 여러 pwnable 문제만 봐도 Stack Canary + Heap Exploit이 거의 대다수를 이루고 있다. 근데 여태까지 Stack Canary가 Mitigation인 것만 알고 있었고 어떤 식으로 동작을 하는지 분석을 해본적이 없었다. 뭐.. 심심하기도 해서 이렇게 분석한 것을 글로 남긴다. 2. 본론 더 읽기

pwnable dockerfile

오랜만에 pwnable 문제 좀 풀고 싶어서 전에 만들어뒀던 dockerfile을 쓰려니 좀 불편해서 새로 만들었다. 현재 쓰고 있는 zsh + tmux 환경을 도커 환경에서도 그대로 쓰고 싶어서 볼륨을 /root 에 추가했으니 필요에 따라서 변경해서 쓰면 된다. dockerfile docker-compose.yml

꿀팁에 게시되었습니다

IDA Function coverage script

잠깐 출장다녀오면서 회사 동료와 얘기하던 중, corpus 최소화 방법에 대해서 얘기가 나왔었다. 그래서 간단하게 아래와 같이 ida에서 동작하는 function coverage기반으로 중복되는 corpus를 걸러낼 수 있도록 만들었다. 많은 샘플 파일을 구해서 해당 script를 돌리고 덤퍼징만 해도 어느정도 효율적으로 퍼징이 가능할 거 같다.

Android 10 Permissions

TL;DR 이 문서는 Android 10 버전부터 적용된 PermissionController의 동작 흐름을 따라가며, 원리를 파악하기 위해 작성되었습니다. Android Permission 안드로이드는 사용자로부터 퍼미션을 승인/거부 후, 해당 기능을 사용할 수 있습니다. 보통 퍼미션 요청을 보낼 때, 아래와 같은 코드를 사용해 사용자로부터 승인 여부를 기다립니다. 승인 여부는 해당 activity 클래스의 onRequestPermissionsResult함수를 통해 알 수 있습니다. 더 읽기

[acme.sh] https 인증서 갱신 자동화 – nginx, route53

기존에 쓰던 인증서 스크립트가 정상작동하지 않아서 좀 더 편하게 인증서 갱신할 수 있는지 찾아봤더니 acme.sh라는 let’s encrypt 인증서 자동 갱신 도구를 누군가 만들어뒀다. 먼저, 아래와 같은 명령어를 입력해서 acme.sh를 설치하자. 설치가 완료되었다면 . ~/.bashrc 또는 . ~/.zshrc 를 입력한 이후, acme.sh를 입력하면 다음과 같이 help 가 나오면 된다. 위와 같이 정상적으로 더 읽기