일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- c언어
- vsCode
- 2021
- 리버스 엔지니어링
- 라이트업
- 워 게임
- Basic
- web
- 변수
- 뭉뭉
- write-up
- 파이썬
- 풀이
- reversing
- 코드엔진
- ctf
- 해킹캠프
- 리버싱
- 드림핵
- 라업
- 강의
- probgame
- 히공
- PYTHON
- ShaktiCTF
- hackingcamp
- 시탭
- 라이트 업
- reversing.kr
- write up
목록해킹캠프 (7)
히공
Rev Baby Crack 문제 메인 함수는 헥스레이가 작동되지 않도록 함수 프롤로그를 빼버렸다. 어려운 코드도 아니고 해서 그냥 어셈으로 분석했다. 키 값이 khngEe 일 때 name 값을 알아내야 하므로 보이는 루틴에서 보이는 연산을 분석해 역연산 루틴을 만들었다. chr(ord('k')-3) + chr(ord('h')-7) + chr(ord('n')-0xb) + chr(ord('g')+4) + chr(ord('E')+0x20) + chr(ord('e')-1) FLAG : HCAMP{hacked} CompReverse 문제 __int64 __fastcall sub_100003D70(const char *buf) { __int64 result; // rax int j; // [rsp+8h] [rbp-..
문제 dvm-rev sub_14A3이 가장 중요한 함수다. 이러한 함수다. ida 리모트 디버깅을 쓴다. 인자로는 opcode를 준다. f9를 누른다. jmp rax가 굉장히 중요하다. 아무거나 입력해준다. call하는 부분으로 오게 된다. 안은 이러했다. memcmp로 가는 것을 볼 수 있다. unk_7F4ABDDDFF00 = memcmp 끝나고 rsi 주소로 가보면 여기 주소와 비교하는거다. 코드를 패치하여 검사를 통과하도록 만들었다. 총 3번 입력받는다. opcode : S가 출력되면 입력을 받는다. opcode : P가 출력되면 memcmp를 호출한다. RAX값을 보니 8개를 입력받는 것을 알 수 있다. (read 함수 호출 후) 여기를 보면 sub_1100는 write함수로 이동하는 함수라고 알..
문제 please_analysis_me 파일의 main 함수다. cypher_code가 굉장히 중요해 보였다. 여기서 get_key가 굉장히 중요해 보였다. get_key의 리턴 값이 v7에 들어가는데 v7은 char형이다. 그러면 cypher_code에서는 어떠한 부분을 0x1C로 xor 한다고 볼 수 있다. get_key 함수다. 어차피 char형이 들어가므로 1바이트만 들어간다. 0x1C가 v7에 들어간다. (리틀엔디안) please_analysis_me는 elf 섹션 중 어느 곳을 암호화하는 것 같았다. opps_I_cannot_execute파일을 ida로 열어준다. 코드가 이상하다. shift+f7을 눌러 섹션을 본다. text를 0x1C로 xor 해줄꺼다. 0x1140~0x1AE5 부분 까지 ..
문제 revtine파일 하나가 있다. Ch0c0l4te_v3_1, Ch0c0l4te_v3랑 같은 친구다. 왜 두 개로 나뉜 것인지 모르겠다. Ch0c0l4te_v5는 "Ch0c0l4te"로 고정된다. 저 sub_1000036E0는 각 요소를 0xA와 xor하는 함수다. 여기서 free 해주는 것을 보아 분석할 필요가 없는 함수라는 것을 알 수 있다. 여기도 페이크 루틴이 많다. 여기가 가장 중요하다. sub_1000037F0 함수다. 암호화를 하는 것을 볼 수 있다. 여기에 인자로 들어가는 off_100008078가 많이 중요하다. off_100008078다. 문자열 중 이러한 문자열이 있다. 해석하면 나의 마음을 반대로 읽을 수 있느냐? 이런 뜻입니다. 여기서 복호화 코드를 만들어야 한단 것을 유추할 ..
문제 문제 파일들 UPX 패킹이다. 언패킹을 진행한다. 실행화면 ida에서 본 화면이다. 2를 입력했을 때 나오는 것들 여기서 1을 입력했을 때 sub_401080을 호출하는데 저게 굉장히 중요하다. 여기서 딱 수상한 루틴이 있다. 변수들 x32dbg로 풀었다. 메인함수 mov eax, dword ptr fs:[0x30] movzx eax, byte ptr [eax+0x68] NtGlobalFlag이다. 디버깅 중인지 아닌지 판단할 때 사용된다. 디버깅 중이면 0x70을 반환하고 아니면 0을 반환한다. 현재 eax값이 0x70인 것을 볼 수 있다. 패치를 통해 넘어가자 안티디버깅을 우회 했다. 이 부분에 bp를 걸어준다. 실행한다. 2를 입력한다. 그 후 여기에 bp를 걸고 1을 입력해준다. 이 함수가 ..
문제 메인함수다. 인자로 문자열 2개를 받는다. 2번째가 AA.....sks여야 한다. v15, v14에 인자1, 인자2를 복사한다. v15를 오픈하고 리턴 값을 v10에 저장한다. 두 번째 인자를 argv_s_2에 넣는다. 매우 중요한 핵심 루틴이다. v10(첫 번째 파일) 을 4바이트씩 끊어서 read_value에 집어넣는다. 그 후 for을 총 6번을 돌려 0x10과 xor 해준다. 그 후 두 번째 파일에 write를 4바이트씩 한다. 간단하게 코드를 만들 수 있다 name = "Data.enc" with open(name,'rb') as f: read_file = f.read() read_file = bytearray(read_file) write_byte = bytearray() for i in..
이번 해킹캠프에 처음 도전했습니다. 저는 이번 발표가 전부 좋았는데 저는 그 중 "장한빈 - Fun, Cool, 하게 해킹하기 (네트워크, 웹 프로토콜 분석 방법)" 발표가 가장 인상 깊었습니다. 라이브로 해킹하시는 것이 신기했고, 보안이 약한 앱들이 많다는 것을 알게 되었습니다. 중간중간에 이벤트를 했는데 텐션 확 올려주시고 완전 좋았던 이벤트였습니다. 저는 CTF에서 리버싱 문제 딱 한 문제 풀기가 목표였습니다. 리버싱 3문제 + misc 2문제를 풀게 되어 매우 기뻤습니다. (한 문제는 퍼블해서 매우 기분 좋은..ㅎㅎ) 결과는 5등 안에 없는 6등으로 마무리해서 매우 슬펐습니다. ㅠㅠㅠ 그래도 양질의 리버싱 문제를 경험해 보았기에 매우 알찬 경험이라고 생각이 듭니다. 개인적으로 이번 해킹캠프는 정말..