본문 바로가기

Reversing

(13)
[SWING CTF] README 보호되어 있는 글입니다.
[Reversing.kr] Flash Encrypt Flash Encrypt 문제 파일을 열어보면 이런 화면이 끝임 문제 파일을 JPEXS 프로그램에서 열어주었다. scripts를 열어서 하나씩 확인을 해보는데 똑같은 gotoAndPlay() 함수를 발견했다. if(어쩌구==1456) 일때 함수 실행되는 것 같아서 플래시 프로그램에 1456 입력해줬더니 입력란 위치가 바뀜 이런 식으로 1456, 25, 44, 8, 88, 20546 입력을 해줬더니 플래그가 나타났다! 16876
[Reversing.kr] Music Player Music Player ReadMe.txt를 먼저 읽어보았다. 1분 미리듣기 프로그램인 듯? 1분 이상 실행하면 플래그를 발견할 수 있을 것 같다. 역시나 문제 파일을 실행하면 1분 미리듣기만 가능하다고 함 "1분 미리듣기만 가능합니다" 문자열을 찾아봄 위로 조금씩 올려가면서 보는데 0x404563에서 cmp eax,EA60 발견 이게 1분이라는 시간을 설정한 무엇인가 EA60을 FFFF로 수정해주었다. (최대시간) 중단점 설정 rtcMsgBox 마다 중단점을 걸어주었다 실행! 런타임 에러가 발생했다 이거를 수정해주면 될 듯!! 오류가 발생한 곳에서 호출 스택을 확인해보았고 004046BF에서 호출된 것으로 확인함 그곳으로 이동해서 봤더니 004046BF가 호출되고 __vbaHresultCheckObj ..
[Reversing.kr] Position Position ReadMe.txt 파일을 먼저 보니 시리얼 키를 알려주고, 플래그가 4글자 + p로 끝나는 걸 알려줌 exe 파일을 실행해보니 이렇게 뜬다. keygen 문제 디컴파일 뷰를 확인해보았다. (Name[1] >> 2 & 1) + 1 + (Name[0] & 1) + 5)와 Serial[0] 값을 비교하여 같으면 됨 파이썬 코드를 작성해보았다. name = ['x', 'x', 'x', ord('p')] ans = [7, 6, 8, 7, 6, 7, 7, 7, 7, 6] for i in range(ord('a'), ord('z')+1): for j in range(ord('a'), ord('z')+1): for k in range(ord('a'), ord('z')+1): if i!=j and j!..
[Reversing.kr] ImagePrc ImagePrc 문제 파일을 열어보면 그림을 그릴 수 있음 WOW!를 그려봤는데 틀렸다고 함 실행 파일을 x32 디버거에서 열어주었다. MessageBox에 중단점 설정 004013AA를 보면 jne 명령어에 의해 Wrong 메시지 박스를 호출하는 루틴으로 점프하는 것을 확인 가능 15F90번만큼 비교가 진행되는 것도 확인 가능 리소스 관련 API 호출하는 것도 알 수 있음 각각 인자로 0, 0x65, 0x18이 넘어감 ID가 0x65인 리소스를 갖고 있는지 확인 PEView로 파일을 열어보았다. ID 0065를 갖는 리소스 존재 대부분이 FF로 채워져 있음 00009060~0001EFE0 해당 부분을 보면 width=0xC8, height=0x96임을 알 수 있음 10진수로 하면 200 x 150 그림..
[Reversing.kr] Easy Keygen Easy Keygen 문제 파일 안에 있는 ReadMe.txt를 보니 Serial이 5B134977135E7D13일 때의 이름을 찾으라는 듯 실행파일에서 아무렇게나 입력하면 강제로 종료가 된다. serial 생성 과정은 입력 받은 문자열을 가져와서 하나씩 0x10, 0x20, 0x30과 차례로 xor 연산을 해주는 것이다. C 코드를 작성해보았다. #include int main() { char name[] = { 0x5B, 0x13, 0x49, 0x77, 0x13, 0x5E, 0x7D, 0x13 }; int x[] = { 0x10, 0x20, 0x30 }; int j = 0; for (int i = 0; i < 8; i++) { printf("%c", name[i] ^ x[j]); j++; i++; p..
[Reversing.kr] Easy Unpack Easy Unpack 문제 파일을 다운로드 받아 압축을 풀어보면 다음과 같다. 해당 exe 파일을 PEiD에서 열어보았다. 바로 OEP가 뜬다. 이게 플래그라고 한다... 허무하다 00401150
[Reversing.kr] Easy ELF Easy ELF 문제 파일은 이렇다. IDA에서 열어주었다. main 함수 코드를 확인해보았다. byte_804A0XX 8048451 함수이고, 정답과 입력값을 비교하는 함수이다. eax에 1이 담긴 상태로 빠져나와야 함. 제일 첫 주소인 804A020부터 input에 저장됨. 여기 if 조건에서 sub_8048451() 함수가 1일 때 다음 함수가 진행이 되므로 두 번째 글자가 1이 된다. 20 = 첫번째 글자 ^ 0x34 = 0x78 22 = 세번째 글자 ^ 0x32 = 0x7C 23 = 네번째 글자 ^ 0xFFFFFF88 = 0xDD 다섯번째 글자는 X임을 알 수 있다. 다 조합하면 L1NUX이다. L1NUX