
풀이는 간단하다. flag_gen()함수를 호출하면 FLAG가 출력된다! cmp [rbp+var_4], 5 jnz short loc_56524AA925FE 이 코드 부분을 보면, [rbp+var_4]가 5가 아니면 "---END---"를 출력하게 된다. 그렇다면 [rbp+var_4]가 5가 되도록 만들어 주면 다음 코드가 실행되어 flag_gen()함수가 실행될 것이다!!! 위 cmp 부분에 bp를 걸어주고 [rbp+var_4] 위치로 가보자! Edit -> Patch Program -> Assemble 로 들어가 원래 0이었던 [rbp+var_4]의 값을 5로 만들어 주었다. 다음 코드들을 실행했더니 FLAG가 출력된 것을 확인할 수 있었다!! FLAG DH{389998e56e90e8eb34238948..
보호되어 있는 글입니다.
보호되어 있는 글입니다.

입력 값과 비교하는 함수로 들어가보면, byte_14003020[a[i]] 가 byte_14003000[i]와 같아야 함을 알 수 있다. (byte_14003020에서 byte_14003000[i]에 해당하는 값을 찾으면 됨) byte3000 = [0x00, 0x4D, 0x51, 0x50, 0xEF, 0xFB, 0xC3, 0xCF, 0x92, 0x45, 0x4D, 0xCF, 0xF5, 0x04, 0x40, 0x50, 0x43, 0x63] byte3020 = [0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0..

입력 값과 비교하는 함수를 들어가보면, a[i+1] + a[i] = byte_7FF6B0813000[i]와 같아야 함을 확인할 수 있다. byte = [0xAD, 0xD8, 0xCB, 0xCB, 0x9D, 0x97, 0xCB, 0xC4, 0x92, 0xA1, 0xD2, 0xD7, 0xD2, 0xD6, 0xA8, 0xA5, 0xDC, 0xC7, 0xAD, 0xA3, 0xA1, 0x98, 0x4C, 0x00] s = '' for i in reversed(range(23)): byte[i] = byte[i] - byte[i + 1] for i in range(0, 24): s += chr(byte[i]) print (s) 반복문으로 암호를 알아낸다. DH{All_l1fe_3nds_w1th_NULL}

입력 값을 비교하는 함수로 들어간다. a(97)을 입력했을 때 97 >> 4 ==> 110 0001 >> 4 ==> 110 (16 * 97) = 610 = 0110 0001 0010 0000 0110 | 0001 0000 ==> 0001 0110 a의 2진수의 값과 위 식의 값이 서로 앞뒤가 바뀌어 있다. (원래는 0110 0001 임) 따라서, 값의 앞 뒤를 바꿔야 한다. byte=[0x24,0x27,0x13,0xC6,0xC6,0x13,0x16,0xE6,0x47,0xF5,0x26,0x96,0x47,0xF5,0x46,0x27,0x13,0x26,0x26,0xC6,0x56,0xF5,0xC3,0xC3,0xF5,0xE3,0xE3,0x00,0x00,0x00,0x00,0x00] s = '' for i in rang..

문자열을 비교하는 함수에 들어간다. 함수 안으로 들어가보면, 반복문이 실행되는 것을 확인 할 수 있다. 반복문의 식을 보면, 사용자가 입력한 값으로 연산을 한다. 그러면 저 식을 반대로 계산해서 돌려 놓는다면 암호의 값을 알아낼 수 있을 것이다. (역연산) byte = [0x49, 0x60, 0x67, 0x74, 0x63, 0x67, 0x42, 0x66, 0x80, 0x78, 0x69, 0x69, 0x7B, 0x99, 0x6D, 0x88, 0x68, 0x94, 0x9F, 0x8D, 0x4D, 0xA5, 0x9D, 0x45] s = '' for i in range(0, 24): s += chr((byte[i] - i*2) ^ i) print(s) 위 코드로 반복문을 돌려서 암호를 알아낸다. DH{I_am_..
- Total
- Today
- Yesterday
- networking
- FTKImager
- Cookie
- rev
- 취약점
- 모바일
- md5
- AssaultCube
- web
- MISC
- SQLi
- dreamhack
- Fiesta
- 리버싱
- Android
- 안드로이드
- sqlinjection
- 인시큐어뱅크
- reversing
- CTF
- Steganography
- forensic
- forensics
- 스테가노그래피
- 해킹
- 드림핵
- mongodb
- 포렌식
- cheatengine
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |