
rev-basic-6 풀고 나니까 훨씬 수월하게 풀렸다. x32dbg로 입력값 검증 함수 확인해보자.

여기다. 이번에는 21번 반복한다.
입력값*FB와 FF를 and 연산하고, 그 값이 7FF6F3363000 배열에 있는 값과 같은지 검증한다. 7FF6F3363000에서 값 21개 가져와서 간단하게 코드 돌리면 될 것 같다.

import java.util.Scanner;
public class rev {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] dump= {0xAC, 0xF3, 0x0C, 0x25, 0xA3, 0x10, 0xB7, 0x25, 0x16, 0xC6, 0xB7, 0xBC, 0x07, 0x25, 0x02, 0xD5, 0xC6, 0x11, 0x07, 0xC5, 0x00};
for(int j=0;j<21;j++) {
for(int i=0;i<128;i++) {
if(((i*0xFB)&0xFF)==dump[j]) System.out.print((char)i);
}
}
}
}

히히~
6 풀 때도 느꼈지만 덤프에서 가져온 0x00 때문에 마지막은 늘 저렇게 공백이 되는데... 왜 그러는 거지
flag: Did_y0u_brute_force?