Wargame & CTF/picoCTF

[picoCTF][Reverse Engineering]vault-door-3 문제 풀이

seomj 2020. 12. 17. 18:08

문제

 

풀이

파일 형식을 보니 java인 것을 확인

 

bintext를 사용하여 코드를 확인

 

 

if {vaultDoor.checkPassword[input]} {

이 조건문을 통해 비밀번호를 확인

 

그렇다면 checkPassword를 확인해보자.

 

 

if (password.lenght() != 32)

를 통해 32가 아니면 false를 return 해주므로

password의 길이는 32

 

밑에서

new char[32]

를 통해 32의 배열을 선언

 

4개의 for문을 통해 password를 조합

 

String s = new String[buffer];

return s.equals("jU5t_a_sna_3lpm18gb41_u_4_mfr340");

를 통해 해당 문자열의 배열에서 조합한다는 것을 예측 가능

 

이를 하나씩 구할 수 없으니 c언어를 통해 구현

#include <stdio.h>

int main() {
	char buffer[50] = "jU5t_a_sna_3lpm18gb41_u_4_mfr340";
	char s[50] = {0};
	int i;
	for (i = 0; i < 8; i++) {
		s[i] = buffer[i];
	}
	for (; i < 16; i++) {
		int j = 23 - i;
		s[i] = buffer[j]; 
	}
	for (; i < 32; i += 2) {
		int j = 46 - i;
		s[i] = buffer[j];
	}
	for (i = 31; i >= 17; i -= 2) {
		s[i] = buffer[i];
	}
	printf("%s", s);
}

 

 

picoCTF{picoCTF{jU5t_a_s1mpl3_an4gr4m_4_u_1fb380}