LEVEL 3

rev-basic-9

reversing
  • 문제 정보
  • 풀이 98
  • 난이도 투표 67
  • 질문 9
  • 최근 풀이자 783
  • 댓글 75

문제 설명

Reversing Basic Challenge #9

이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다.

해당 바이너리를 분석하여 correct를 출력하는 입력값을 찾으세요!

획득한 입력값은 DH{} 포맷에 넣어서 인증해주세요.

예시) 입력 값이 Apple_Banana일 경우 flag는 DH{Apple_Banana}

Reference

Reverse Engineering Fundamental Roadmap

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

avatar
JSec
Dreamhack Beta CTF 1위
출제된 지 1일 만에 풀이 완료!

난이도 투표 67

질문 9

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
복호화 코드
안녕하세요. 복호화 코드를 짜는데 어려움이 있어 질문 올립니다. 아래와 같이 코드를 짰는데 어디가 잘못된 건지 도저히 모르겠습니다ㅜㅜ 제가 어디를 잘못 이해하고 있는것일까요? 8개씩 나누기 귀찮아서 총 4번 코드 돌릴 생각으로 만든 코드입니다..! #include <stdio.h> #include <stdint.h> #define ROL(x, n) (((x) << (n)) | ((x) >> (8 - (n)))) int main() { unsigned char key[] = "I_am_KEY"; unsigned char result[50] = { 0x7E, 0x7D, 0x9A, 0x8B, 0x25, 0x2D, 0xD5, 0x3D, 0x7E, 0x7D, 0x9A, 0x8B, 0x25, 0x2D, 0xD5, 0x3D, 0x03, 0x2B, 0x38, 0x98, 0x27, 0x9F, 0x4F, 0xBC, 0x2A, 0x79, 0x00, 0x7D, 0xC4, 0x2A, 0x4F, 0x58, 0x00 }; unsigned char byte[256] = { 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75, 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, 0x53, 0xD1, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, 0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73, 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16, 0x00}; unsigned char a1[8] = { 0x7E, 0x7D, 0x9A, 0x8B, 0x25, 0x2D, 0xD5, 0x3D}; //de for (int i = 15; i >= 0; --i) { for (int j = 7; j >=0; --j) { unsigned char v2 = a1[((unsigned char)j+1)& 7] ; a1[((unsigned char)j + 1) & 7] = (ROL(v2, 5) - byte[key[j] ^ a1[j&7]]) ; } } for (int i = 0; i < 8; ++i) { printf("%c", a1[i]); } } `
avatar 양재천근린공원

최근 풀이자 783

T43W00
비기너즈 졸업
joocker
대표 업적 없음
컴컴한해커
대표 업적 없음
domaumr
대표 업적 없음
노란발바닥
대표 업적 없음
avatar
The Asan Man
컴퍼니
avatar
양재천근린공원
대표 업적 없음
Haruto
대표 업적 없음
Yeager
대표 업적 없음
서정민
대표 업적 없음

댓글 75

avatar
m1n1
Dreamhack CTF S6 I - Div1 참여
정말 어려웠는데 암호화 로직을 먼저 파이썬 코드로 작성하고 한글자씩 역연산 테스트 및 검증 해보니 답이 찾아지네요 포기하지마시고 다들 파이팅~
박세오
대표 업적 없음
ㅋㅋㅋ
avatar
DA2RIM
리버싱 졸업
와 재밌다
avatar
yoobi
워게임 고인물
Vamos!
avatar
ksparkbr
대표 업적 없음
어려웠다....
암호화하는 코드를 다 짰으니.. 이제 복호화를...ㅠㅠㅠ
avatar
minmoong0828
세계수
c++로 짰는데 unsigned로 저장 안해서 혼났다,,
avatar
J-jaeyoung
워게임 풀이: 20
un?signed
avatar
UKO
2022 Christmas CTF 운영
총총
avatar
JiR4Vvit
강의 수강: 50
하 ㅠ_ㅠ 어려웠엉..