Bace

HackCTF - Authenticate 본문

HackCTF/Web

HackCTF - Authenticate

Bace 2020. 2. 3. 06:31

문제는 다음과 같다.

 

딱 봤을때는 sql injection 문제인가 해서 admin / 'or'1 을 넣어보았다.

Invalid creds 라고 뜬다.

 

페이지 소스를 봐보았다.

 

user 이름을 받아서 함수를 거쳐 로그인하는 것 같다.

일단 아래쪽에 id가 cresponse라고 나와있으므로 chrome의 console 기능을 통해 user 이름에 cresponse를 넣어보았다.

function a(h) {
	if(h.length != 2) {
		h = "\x30" + h;
	}
	return "\x5c\x78" + h;
}

function x(d) {
	if(d < 0) {
		d = 0xFFFFFFFF + d + 1;
	}
	return d.toString(16).toUpperCase();
}

var k = "cresponse";
var func = "\x0d\x13\x45\x17\x48\x09\x5e\x4b\x17\x3c\x1a\x1f\x2b\x1b\x7a\x0c\x1f\x66\x0b\x1a\x3e\x51\x0b\x41\x11\x58\x17\x4d\x55\x16\x42\x01\x52\x4b\x0f\x5a\x07\x00\x00\x07\x06\x40\x4d\x07\x5a\x07\x14\x19\x0b\x07\x5a\x4d\x03\x47\x01\x13\x43\x0b\x06\x50\x06\x13\x7a\x02\x5d\x4f\x5d\x18\x09\x41\x42\x15\x59\x48\x4d\x4f\x59\x1d\x43\x10\x15\x00\x1a\x0e\x17\x05\x51\x0d\x1f\x1b\x08\x1a\x0e\x03\x1c\x5d\x0c\x05\x15\x59\x55\x09\x0d\x0b\x41\x0e\x0e\x5b\x10\x5b\x01\x0d\x0b\x55\x17\x02\x5a\x0a\x5b\x05\x10\x0d\x52\x43\x40\x15\x46\x4a\x1d\x5f\x4a\x14\x48\x4b\x40\x5f\x55\x10\x42\x15\x14\x06\x07\x46\x01\x55\x16\x42\x48\x10\x4b\x49\x16\x07\x07\x08\x11\x18\x5b\x0d\x18\x50\x46\x5c\x43\x0a\x1c\x59\x0f\x43\x17\x58\x11\x04\x14\x48\x57\x0f\x0a\x46\x17\x48\x4a\x07\x1a\x46\x0c\x19\x12\x5a\x22\x1f\x0d\x06\x53\x43\x1b\x54\x17\x06\x1a\x0d\x1a\x50\x43\x18\x5a\x16\x07\x14\x4c\x4a\x1d\x1e";
buf = "";
if(k.length == 9) {
	for(i = 0, j = 0; i < func.length; i++) {
		c = parseInt(func.charCodeAt(i));
		c = c ^ k.charCodeAt(j);
		if(++j == k.length) {
			j = 0;
		}
		buf += eval('"' + a(x(c)) + '"');
	}
} else {
	$("#cresponse").html("<div class='alert alert-danger'>Invalid creds...</div>");
}

 

결과

 

아래와 같은 결과가 나온다.

"na d8f08r_hzXkblhh["{.+r.'s1q=%|?dretv/#t?df|xw5#p"ba&xv?h`a/*.hf/1p::(<)r-cpchkdu>cl~khkpl2bvp:'l~{.`}>s)d~{:yq?i)`c}=-3p%8x,:{&8%<'u1e{ht#b's18%:sdumbh4ck5%.&yl6a0r;cag88ay#t:/tj)bjw9Pz~v<-h1tt~j?-k?uuq?:rp"

 

이상한 특수문자들과 영어들이 막 섞여있다. 이 중 특수문자 제외하고 9글자로 이루어진 단어들을 다시 대입해보았다.

khkpl2bvp와 dumbh4ck5 가 나왔다

 

khkpl2bvp

 

dumbh4ck5

 

dumbh4ck5에서 알아볼 수 있는 문자열이 나왔다.

if(u == "XorIsNotSooS3cur3") { 
	if(document.location.href.indexOf("?p=") == -1) { 
    	document.location = document.location.href + "?p=" + u; 
    } 
} 
else {  
	$("#cresponse").html("Wrong password sorry.")
}

 

Username에 dumbh4ck5를 넣고, Password에 XorIsNotSooS3cur3를 넣으면 될 것 같다.

 

flag가 떴다.

 

# Auth

'HackCTF > Web' 카테고리의 다른 글

HackCTF - Home  (0) 2020.02.01
HackCTF - Input Check  (0) 2020.01.31
HackCTF - Cookie  (0) 2020.01.31
HackCTF - Time  (0) 2020.01.12
HackCTF - Guess me  (0) 2020.01.04