Reverse Engineering/CodeEngn Basic (19) 썸네일형 리스트형 [리버싱] CodeEngn Basic RCE L19 문제 설명개념 설명AutoIt:Windows 작업을 자동화하는 스크립팅 언어이자 도구원래는 반복적이고 시간이 많이 걸리는 작업을 자동화하기 위해 만들어짐.ex)파일 관리, 윈도우 간 전환, 특정 버튼 클릭 등 사람이 직접 해야 할 작업을 코드로 작성하여 자동으로 수행 디버깅 함수: Isdebuggerpresent timeGetTime함수:Windows API에서 사용되는 함수로, 시스템이 시작된 이후 경과된 시간을 밀리초 단위로 반환이 함수는 시스템이 부팅된 후부터 현재까지 얼마나 시간이 흘렀는지 측정할 때 사용 컴파일: 컴퓨터가 이해할 수 있는 언어로 바꿔주는 과정* Java : 컴파일의 결과로 자바가상머신(JVM)에서 실행가능한 “.class” 파일이 생긴다. 디버깅: 자신이 만든 프로그램 내부에 숨.. [리버싱] CodeEngn Basic RCE L18 문제 설명문제 풀이G0od 부분에 가보자.비교연산 있는 부분이 상당히 수상하니 이 부분을 신경써서 입력해보자. 내가 입력한 값이 String 1에 들어가 있는 것을 확인할 수 있다. String1을 수정해주자. 정답이다. [리버싱] CodeEngn Basic RCE L17 문제 설명문제 풀이파일은 다음과 같다. 이 부분을 살펴보아야 할 것 같다.이 두 부분이 수상한데 아래는 30 단어가 넘으면 나오는 문장 같으니 위를 먼저 봐본다. 일단 입력한 값이 어떻게 되는지부터 확인해보자. 네임은 한자릿수라고 하니 한자릿수만 입력해주자. 다음과 같이 입력해주었다.더 입력해주라고 뜬다. 아까 CMP문을 살펴보자.해당 부분의 EAX 값을 확인해보니 내가 입력한 자릿수가 들어간 것을 확인할 수 있다... 이 부분을 1로 바꿔주자.그리고 새로 저장하고 파일을 다시 열어주자. 45B850부분을 자세하게 살펴봐야한다. Ctrl+G로 찾아가주자.이 부분이다. 이 부분에서는 name값을 이용하여 시리얼 번호를 만드는데, 이 코드를 이용하여 C코드를 짜면 위의 과제가 해결될 것이다. 코드는 다음과 .. [리버싱] CodeEngn Basic RCE L13 문제 설명개념 설명[ .NET ]모든 운영 체제에서 기본적으로 실행할 수 있는 데스크톱, 웹 및 모바일 애플리케이션 빌드를 위한 오픈 소스 플랫폼이 시스템에는 확장 가능한 최신 고성능 소프트웨어 개발을 지원하는 도구, 라이브러리 및 언어가 포함되어 있음 예를 들어 .NET 프로그래밍 언어 코드를 컴퓨팅 디바이스가 처리할 수 있는 명령으로 변환하고,효율적인 소프트웨어 개발을 위한 유틸리티를 제공한다.(→ 현재 시간을 찾거나 화면에 텍스트를 인쇄할 수 있다)마지막으로 텍스트, 숫자 및 날짜와 같은 정보를 컴퓨터에 저장하기 위한 데이터 유형 세트를 정의하기도한다.문제 풀이이번 파일은 .NET 파일이다. 이 파일을 풀기 위해선 dnSpy를 다운받아 주어야 한다.win64.zip을 다운받아 수행했다. 다운받고 .. [리버싱] CodeEngn Basic RCE L12 문제 설명문제 풀이일단 KEY 값을 찾아보기로 했다.Congratulation 주변에 가보았다.Congratulation 위쪽을 봐서 어떤 흐름인지 확인해 보았다.일단 0040107D에서 JMP문이 JMP되지 말아야 할 것 같고,그 위의 CMP문에서 EAX와 7A2896BF를 비교하여 같아야 할 것 같다. 7A2896BF를 이진수로 변환하면 2049480383이다.변환해서 입력해주면, 성공이다. 그럼 이제 KEY값이 메세지 박스에 출력되도록 해보자. 키값을 overwrite하기 위해 HxD를 켜주었다. 성공부분에 써주면 되니까 성공부분 주소를 찾아보자. 이곳인 것 같다. 이곳에 키를 넣어주자. [리버싱] CodeEngn Basic RCE L16 문제 설명문제 풀이UPX가 아니니 언패킹 하지않고 실행해주자. 이번엔 디버거에 넣자마자 터미널이 뜬다.일단 실행시켜보자.틀렸다고 뜬다. 텍스트 스트링에 가보자.뭔가 성공했을 때 뜰 것 같은 문구가 있다.이곳에 가서 브레이크 포인트를 걸어주고,이 비교구문이 분기점일것같은데, EBP-3C를 찾아보자.EBP값 - 3C => 70FF28 - 3C = 70FEEC = 7405352 - 60 = 7405292 이므로시리얼 값을 7405292로 바꿔주면 될 것 이다. 저 값은 그냥 16진수값이 아닌 주소값임을 까먹고 있었다.. 주소를 찾아주도록 하자 70FEEC 주소를 찾으면 된다. 알맞게 읽으면 E4C60D97임을 알 수 있다.따라서 패스워드는 3838184855이다.정답이다. [리버싱] CodeEngn Basic RCE L15 문제 설명문제 풀이익숙한 문제다. 저번에 했던대로 풀어보자.UPX가 아니니 언패킹 하지않고 실행해주자. 일단 name을 CodeEngn으로 맞추고 시리얼엔 아무거나 넣고 실행시켜주자. 역시 틀렸다고 뜬다. 텍스트 스트링에 가보자.뭔가 성공했을 때 뜰 것 같은 문구가 있다.이곳에 가서 브레이크 포인트를 걸어주고,이 비교구문이 분기점일것같은데, 이 주소(45B844)를 찾아보자.Follow in Dump >> Memory address로 가보면 된다. 그러면 해당 주소의 값을 찾을 수 있다. 그럼 이제 입력해보자. 틀렸다.. 메모리 덤프 주소는 리틀 엔디언 방식으로 읽어주어야 한다고 한다..쉽게말하면 반대로 읽어야한다. 다시 입력해주자. 성공 ! [리버싱] CodeEngn Basic RCE L14 보호되어 있는 글입니다. 이전 1 2 3 다음