목록공부/CTF 문제 풀이 (16)
OutDoorFrog의 리버싱 이야기
완벽하진 않은 solve입니다. 파일 구성은 요렇게 되있습니다. (하나는 분석때문에 더 있는겁니다.) 분석 해봅시다. read 함수가 두 주소에서 호출당하네요. bp 걸어넣고 어느 주소에서 멈추는지 봅시다. 솔직히 angr 솔브도 가능할 것 같은 느낌이 듭니다. 이미 분석을 진행했는데 sub_40d770 함수에서 호출당했나보네요. 넵 main 함수에서 호출당하네요. 그러면 플래그를 판단하는 부분을 찾아봅시다. 디컴파일 해보니 저런 형식의 판단 패턴이 존재했습니다. 소서리문제랑 비슷하네요.. 오호.. 어셈 구문을 추려내기 위해 따로 명령어 구문을 봅시다. cmp rax,0x... , cmp rcx,0x... 이런 형식의 구문이 존재합니다. 새로운 명령어를 배워야 할 때 안타깝게도 grep 명령어는 조건을 ..
아는 지인분께 반드시 풀어보는 것이 좋다고 추천 받은 좋은 문제가 있습니다. defcon-crackme 2000 시리즈에 속한 문제들입니다. 실로 문제 난이도가 어렵더군요;;; 이 바이너리를 어디서 다운 받을 수 있을까요.. sinfocol 님의 깃허브 에서 다운받을 수 있습니다. 제가 풀어볼 문제는 sorcery라는 문제입니다. 바이너리 구성 일단 샘플 상에 20여개의 바이너리가 존재합니다. (아래의 하나는 제가 ida로 분석한 거.. ㅎㅎ)(근데 이거 라이트업 보니까 바이너리가 200개 존재하던데 왜 샘플에는 20개지) 아마 easy crack101 류의 풀이 형태가 비슷할 것 같습니다. 문제 분석 일단 바이너리 하나만 콕 찝어서 분석해봅시다 ㅎㅎ. 저는 0a4를 접두사로 가지고 있는 바이너리를 분석..
한 숨 돌릴겸 LOGCON에 한 번 참여해봤습니다. 네 세미나 갔을 때 짬내서 문제 몇몇개 정도만 풀어봤습니다 ㅋㅋㅋㅋㅋ 개성 있는 문제들이 진짜 많았더군요. ㅋㅋㅋㅋ 실행 파일로 준 문제들은 엥간하면 리버싱으로 풀었습니다. (서버는 1도 모르니 원...) 해킹 이외 종목에 CTF 방식을 차용해서 대회를 운영했는데 진짜 재밌었습니다. 게싱 실력을 늘리는데 도움을 받은 것 같네요. 하지만.. 맞아요 결론적으로 그의 최애 품번을 알아낼 수 없었어요... (출제자님에게 한 번 여쭤봐야 할 듯..)
보호되어 있는 글입니다.
오늘은 게싱 능력 상승을 위해 Codegate 2018 예선에 출제되었던 easy_serial 문제를 풀어볼 것입니다. 그럼 문제를 풀면서 행복 회로를 활활 태워보러 갑시다! 실행 환경 결정 Detect It Easy를 이용해서 한 번 확인해봅시다. Elf64인 것을 확인할 수 있습니다. 돌려봅시다. 반응이 영 좋지 못하군요. IDA로 돌려봅시다. hs_main이라 main에서 또 main 호출하는 패턴이면 c 말고 다른 언어일 확률이 높습니다. shutdownHaskellAndExit... Haskell을 한 번 구글에 검색해봅시다. 네 함수형 프로그래밍 언어라는 점과 컴파일 과정을 나타내주는 사진을 구할 수 있었습니다. 복잡하긴 합니다만.. 요약하면 하스켈이라는 언어에서 C로 탈바꿈해서 나온거네요. ..