본문 바로가기

분류 전체보기

(169)
[Reversing.kr] Direct3D FPS Direct3D FPS 게임이당 Game Clear! 문자열이 출력되는 주소값 위 아래로 확인해보니 eax가 0x379194부터 0x210만큼 커지는 것을 알 수 있다. eax가 0x37F884가 되면 Game Clear!를 만날 수 있음 이상한 문자열이 있었는데 이상한 문자열 + 0xE 위치의 한 바이트와 0x38을 XOR하여 디코딩 디코딩 키 값은 달걀귀신 ID 값 * 4 한바이트씩 각 인덱스 * 4와 xor 연산을 하면 디코딩된 문자열을 얻을 수 있음 고구마 한 마리를 죽이면 한 글자씩 복호화된다. flag="43 6B 66 6B 62 75 6C 69 4C 45 5C 45 5F 5A 46 1C 07 25 25 29 70 17 34 39 01 16 49 4C 20 15 0B 0F F7 EB FA E8..
[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
[Reversing] 5주차 보호되어 있는 글입니다.
[Forensics] 5주차 Shark’s secret.pcapng 먼저 Wireshark에서 해당 파일을 열어보았다. 보다보니 Secret.png 파일을 주고 받았다는 것을 확인할 수 있었다. 주어진 pcapng 파일을 pcap 파일로 변환하여 NetworkMiner로 열어보았다. 앞서 발견한 Secret.png 파일을 포함한 이미지 파일이 두 장 있다. Wireshark에서 패킷을 정렬해보았는데, 힌트로 받은 identification이 정렬되지 않은 것을 확인할 수 있었다. 29926 > 29927 > 29928 > 29932 > 29930 > 29931 > 29929 > 29933 > 29934 > 29935 > 29936 > 29941 > 29938 > 29939 > 29940 > 29937 > 29942 이 identif..