본문 바로가기

CTF

(36)
[reversing.kr] Easy Crack 풀이 http://reversing.kr/index.php ​ ​ 문제를 다운받아 실행해보았다. 시리얼값이 아닐때 나오는 메시지를 확인. ​ 디버거를 이용해서 그 내가확인한 메시지를 찾아보니 성공메시지도 보인다. 둘다 근처에있을테니 아무거나 눌러서 가보자. ​ ​ 성공과 실패 메시지가 조금위에있는 jne 조건 에의해서 나뉘고있는거같다. 그래서 일단 DDDDD 를 입력해서 실행을해보니 저 조건까지 가지도못하고 실패 메시지가 나오길래 ​ 중간에 다른 조건문이있다고 생각하고 조금 위로 올려보니 ​ ​ jne로 먼저 조건을 하나 보던게있었다. esp+5위치에 있는 값이 'a' 인지를 물어보는건데. ​ esp 우클릭 - 덤프에서 따라가기 ​ 이부분이 esp가 위치한곳이다. +5라고 했으니 보면 두번째로 입력한 D 가 ..
[써니나타스] BINARY 11번 문제 풀이 http://suninatas.com/ ​ 써니나타스 11번 문제를 풀어보았다. ​ 9번과 똑같은 아이콘의 프로그램과 실행된 상태 ​ ​ ​ 디버거를 이용해서 클리어 문자열을 찾아 이동하였다. ​ 그 부분으로가서 보니 내가입력한 시리얼값 (AAAAAAAAAA...) 와 어떠한 문자열을 비교하는모습. ​ 그 문자열을 입력해보니 시리얼값을 준다. ​ ​ ​
[써니나타스] BINARY 10번 문제 풀이 http://suninatas.com/ ​ 써니나타스 10 번 문제 풀이 ​ ​ 다운받은 문제와 실행했을때의 모습 ​ 에러 메세지. 어떤 컴파일인지 확인해보니 .NET라고한다. .net는 디컴파일이 되는데 하기전에 다른부분도 봐보자. ​ ​ IDA를 확인해서 보니 button이 두개가보인다 ​ 실행화면에 있던 ok 와 out 버튼이라고 예상된다. ​ 그쪽으로 이동 ​ 음? ​ 저게 힌트인가했는데 키 였음.
[써니나타스] BINARY 9번 문제 풀이 http://suninatas.com/ ​ 써니나타스 9 번 리버싱문제를 풀어보았다. ​ 다운을 받아 실행해본화면이다 ​ 시리얼값을 이것저것 넣어보았지만 큰 반응이없다. 틀렸다는 메세지 박스도 나오지않아서 조금 당황. ​ ​ 디버거로 문자열을 확인하니 성공메세지 처럼보이는 부분을 발견하여 거기에 브레이크포인트를 걸어놓고 실행하였다 ​ 시리얼값은 DDDDDDDDD를 눌러서 진행 ​ ​ 내가 입력한 DDDDDDD..... 와 913465 를 비교하여 결과를 정하는 부분. ​ ​ ​ 성공. ​ ​ ​
[Reversing] angstromctf 2018 리버싱 3번문제 https://2019.angstromctf.com/ 2019.angstromctf.com 2019.angstromctf.com ​ ​ 풀어볼 문제 ​ 끄덕 먼저 경로를 알려줬으니 경로로들어가서 실행시켜보자. ​ ​ ​ 일단 그냥 실행하니 라고하니 인자를 하나 넘겨서 진행한다는걸 알수있다. (왜 rev3 실행시켰는데 rev1 이라고뜨지) ​ 인자로 testabcd 를 넘겨보니 Oops, !! ​ 문제 다운 ​ 암호화나 컴파일 상태 확인 = gcc... ​ 일단 지금 저 프로그램안에는 Oops, 라는 실패문자열이있다는걸 알았으니 그 기준으로 IDA을 통해 분석 ​ ​ 내가 알고있는 문자열이 있으니 찾아가보자. ​ ​ 위의 이미지들을 보면 "egzloxi|ixw]dkSe]dzSzccShejSi^3q" 이 문..
[코드엔진] basic 7 풀이 7번 문제 c드라이브 문제 설명대로 C 드라이브의 이름을 CodeEngn 으로 변경하였다. ​ 이제 실행해본다. ​ 시리얼값을 요구. 역시 아님. ​ 문자열 들 프로그램의 문자열들을 찾아보니 시리얼값 처럼 보이는게 많이나온다. ​ 일단 성공 문자열로 이동해보았다. 성공 문자열로 이동하여 쭉 돌려보니 ​ 처음에 L2C-5781 이라는 문자열을 쭉비교해보고 그다음 함수에서 EqfgEngn4562-ABEX 라는 문자열을 쭉비교하는 모습이 보였다. L2C-5781EqfgEngn4562-ABEX 그래서 그둘을 붙혀서 입력해보니 성공 처음에는 c드라이브 이름을 변경하지않고 그냥 실행시켰더니 키값이 L2C-5781 4562-ABEX 이였다. ​ 즉 c드라이브이름을 변경하여 나온 CodeEngn 은 EqfgEngn 으..
[코드엔진] basic 6 풀이 친철하게 언패킹하라고 알려주네요. UPX입니다 언패킹후 확인. 이제 실행시켜봅시다. 저 문자열을 디버거로 찾아봅시다. ​ ....? AD46DFS547?? ​ ...........????????찾았다 ​ 문제는 OEP를 같이 입력하라하였으니 OEP는 프로그램이 시작되는 위치를 말하는거입니다. 이미 언패킹을했기때문에 그냥 실행시켜서 보면되죠 OEP 이제 정답은 00401360AD46DFS547 입니다. ​ 끝끝.
[코드엔진] basic 5 풀이 5번 문제 ​ 일단 실행. ​ 일단 입력. ​ ​ 당연하게 디버거로 올려봅시다. ​ ????? 아까본 문자열이 없다?? 혹시 패킹되어있는지 확인해봅시다. ​ 짜잔 UPX로 패킹되어있다. 풀어봅시다. ​ 언패킹 ​ 언패킹하여 풀어낸 모습. ​ 이제 디버거에 올려서 메시지로 보았던 문자열을 찾아서 이동해보자. 어우야.. 찾은 문자열에서 조금더 위로 올라가면 분기하는 부분들이나오는데 천천히 진행해본결과 문자열을 받아가는 함수 , 문자열을 입력했는지 확인하는 함수 , 1번시리얼과 2번시리얼을 비교하는 함수들이나오길래 ​ 시리얼을 위에칸만 입력하는게아니라 아래도 입력을 해야하는걸 알았다. ​ 결과적으로 직접입력한 시리얼값 aaaa1111와 Registered User 을 비교하는데 안에 자세히 들어가면 4개씩 비..