목록공부/CTF 문제 풀이 (16)
OutDoorFrog의 리버싱 이야기
오늘은 z3에 적응하기 위해서 2018 Codegate 예선전 문제로 나온 Redvelvet을 풀어보겠습니다. 일단 DIE에 던져줍시다. 우분투 x64 환경에서 한 번 돌려봅시다. 프로그램이.. 죽어버렸네요. IDA로 살펴보면 27의 길이의 문자열을 입력받은 후 15개의 함수를 거쳐서 값을 검증한 후 SHA256 해시 함수로 암호화하여 바이너리에 하드코딩되어 있는 긴 문자열과 비교하고 있습니다. 이름을 지어주자. 이대로 계속 작업을 하다간 멘탈폭사를 겪을 수 있습니다. 네이밍을 해줍시다. 혹시 모르는 함수가 있다면 제가 참조글 링크를 해놨으니 한 번 보시는 것을 추천드립니다. OpenSSL 라이브러리 홈페이지에서 설명한 SHA*_* 함수 ptrace 함수 설명 흐름이 이제 보이는 것 같습니다. NULL을..
오늘은 저와 같이 Angr 사용법에 대해 연구해봅시다! 1. Angr 사용법을 배우려고 하는 EU 1. Layer 7 CTF (2018) 문제를 푸는 도중.. Ezbt's Q : Did you know how to use Z3 Library or Angr? A : Noop, I don't know what it is.. 2. 지인분께 Go언어로 된 문제를 받고 리버싱을 하는 도중.. ??'s Q : 마! 앵거 문제 무봤나? A : 잠만 나 아직 ezbt WriteUp도 안 검색해봤.. 잊을만하면 Angr 문제가 나와서 사용하는 방법을 익혀둘려구요. ezbt 문제 같은 경우는 리버싱을 다해놓은 상황임에도 불구하고 손도 못대고..(IDA 디컴파일 기능을 안사용하고, 툴 사용을 자제하던 때였음. (바보) ) ..
안녕하세요! 재활치료 중인 개구리입니다! 세미나 참가 이후... 정보보안 영재교육원에서 정보보안경진대회를 개최했었습니다. 저는 비록 교육원생은 아니지만 Demon팀원 한 분과 갓갓 한 분에게 바이너리 파일을 제공해달라고 요청했습니다! 그리고 간곡한 요청에 마음 넓은 두 분께서 파일을 제공해주셨습니다! 1. Asm picoCTF 때 많이 경험해본 문제 유형입니다.(어셈 코드만 주기) 파일 시그니처를 파악하기 위해 010 editor로 열어보았습니다. 파일 시그니처 대신 귀여운 gdb로 main 함수를 disass한 데이터를 제공했더군요. cmp 명령어 이후 jne 명령어를 사용해서 분기점을 만들어주는데.. cat flag라는 문자열을 입력했는데 Wrong... 이라는 문자열이 출력된 모습이 보이고.. %d..
리버서가 바이너리를 복구하는 이야기입니다. 0. 문제 설명 파이썬 암호화 코드가 있는 "ENC.py" 파이썬 코드에 의해 암호화된 데이터를 지닌 "ENCRYPTED" 문제는 두 파일로 구성이 되어 있습니다. Python, 파일 입출력, 정렬 알고리즘에 지식이 있으면 풀 수 있습니다. 1. Python 코드를 봅시다. from struct import unpack,pack table = [48, 27, 50, 8, 47, 73, 12, 4, 66, 0, 14, 77, 56, 26, 63, 67, 17, 11, 68, 22, 72, 69, 60, 64, 74, 58, 54, 42, 65, 32, 33, 40, 39, 37, 51, 59, 24, 35, 38, 61, 21, 31, 57, 20, 76, 13,..
이 이야기는 어느 리버서의 고통받는 이야기입니다. Windows API 만져본지 8개월이 다 되가는데 분석 문제가 나왔습니다. 문제가 이렇게 나올 줄은 몰랐으며 리버싱하는데 꽤나 걸렸던 문제입니다. 한 글자 한 글자를 연산하는 문제!!! 같이 보시죠!! 1. DIE로 분석 Default로 설정이 되어 있군요.. 2. IDA로 분석해볼까? 붉은색을 Brush Paint로 칠했군요. Hand-Ray 프레임워크를 사용합시다. 핸드-레이 프레임워크는 c->asm, asm->c 가 가능한 프레임워크 입니다. 용량도 가벼워서 사람들이 정말 많이 사용하는데요. 그렇습니다. 우리의 뇌와 손이 있으면 됩니다. 말 그대로 인간 디컴파일러!! 3. 힌트 코인 IDA 덕분에 Winmain으로 Main 함수가 만들어져있는 것을..