기본 콘텐츠로 건너뛰기

2017 암호경진대회 4번

가장 쉽게 풀었죠. 30분도 안걸렸던거 같네요.
프로그램을 통해서 암호문의 유효성이 검증되는데요, 역공학을 통해서 암호문을 쉽게 찾을 수 있습니다.

답안 :
Snow White and the Seven Dwarfs!.

풀이 :
Oracle함수가 CRC를 계산하기 위해서는 중간에 평문이 복구될 것으로 보였다제공하는 dll을 이용하여 Oracle함수의 입력으로 암호문을 넣은 프로그램을 작성하였다. IDA와 Immunity Debugger를 이용해 프로그램을 역공학하여 얻을 수 있었다.

댓글

이 블로그의 인기 게시물

프로그래머스 - 시저 암호

public class Caesar { String caesar ( String s , int n ) { n %= 26 ; String result = "" ; char [] temp = s . toCharArray (); for ( int i = 0 ; i < temp . length ; i ++) { if ( temp [ i ]>= 'a' && temp [ i ]<= 'z' ) temp [ i ] = ( char ) (( temp [ i ]+ n )> 'z' ? ( temp [ i ]+ n - 1 )% 'z' + 'a' : ( temp [ i ]+ n )); else if ( temp [ i ]>= 'A' && temp [ i ]<= 'Z' ) temp [ i ] = ( char ) (( temp [ i ]+ n )> 'Z' ? ( temp [ i ]+ n - 1 )% 'Z' + 'A' : ( temp [ i ]+ n )); result += temp [ i ]; } return result ; } public static void main ( String [] args ) { Caesar c = new Caesar (); System . out . println ( "s는 'a B z', n은 4인 경우: " + c . caesar ( ...