문제

Login Bypass 1

50

normaltic1 로 로그인하자!

현재 우리의 계정은 다음과 같다. [ID/PW] : doldol / dol1234



 

주석을 사용한 SQL Inection을 사용해보자

doldol' # 으로 요청을 보냈을 때 정상적으로 #이 전달 되었으나 로그인 실패가 되었다. 

 

다음은 or를 사용한 SQL Injection을 사용해보자 

normaltic1' or '1'='1 

로그인에 성공한 것을 보니 주석처리 혹은 특수문자에 대한 주석처리가 이루어진 듯하다.

 

문제

Pin Code Crack

50

아래 사이트의 PIN 번호를 크랙해보자!


 

4자리 + 실패에 대한 제한을 하는 처리가 없는 것을 보니 반복문으로 4자리를 모두 돌려보면 될 듯하다.

request를 확인해보자

otpNum=123 형식으로 전달하면 될 것같고 응답은

 

Login Fail이라는 문자열이 존재 한다.

 

반복문으로 4자리의 숫자를 보내고 응답 값에 "Login Fail"이라는 문자열이 존재하지않는 응답 값을 찾아보자

또한 문자열로 날아가느 것이 아니라 숫자로 넘어가는 것으로 보인다. 문자열이었다면 "123"으로 전송 될 것이다.

 

그러므로 0001과 같은 패딩은 필요하지 않아보인다.

 

크롬 브라우저의 콘솔에서 요청을 보내보자

url = "http://ctf.segfaulthub.com:1129/6/checkOTP.php?otpNum="
let id
for(i=0; i<=9999 ; i++){
let otpNum = i


fetch(url + otpNum)
.then(function(response) {
    return response.text();
})
.then(function(string) {
	if (!string.includes("Login Fail")){
        id = otpNum
	}
});
}

 

스읍.... 여기서 fetch의 결과가로 error 로그가 많인 나오지만....

id를 출력해보니 값이 나온다

fetch의 사용법이 잘못 된 부분이 있나보다 일단 값을 얻었으니 사용해보자

 

 

빙고

 

문제

Admin is Mine

50

admin 계정으로 로그인하자!

현재 우리의 계정은 다음과 같다. [ID/PW] : doldol / dol1234

 


SQL Injection을 테스트하기 위해 ID = doldol' #  PW=dol1234로 요청을 보내보니 아래와 같은 결과를 볼 수 있었다.

 

보낸 #이후의 값이 없다.

 

예상으로는 #* 와같은 정규식으로 SQL 보내기 전 replace를 한다면 발생 할 수 있을 것 같다.

그렇다면 or는 동작할가?

 

일단 전송하는 단에서는 replace가 안되는 것으로 보인다.

 

그렇다면 doldol' or '1'='1로 전송을 보내보자 

실행되는 쿼리는 id='doldol' or '1'='1' and pw='dol1234'로 예상된다.

 

실패하는 것을보니 다른 방법으로 SQL Injection을 막는것 같다.

 

history를 찾아보자 

 

찾다보니 login.js 라는 파일을 찾았다.

응답 값으로부터 resultData가 'ok'라면 로그인 성공이라고 한다. 

응닶으로 오는 값을 ok로 바꿔보자

Action > Do intercept > response to this request

클릭해주고 forward를 누르면 해당 리퀘스트에 대한 response를 인터셉트 할 수 있다.

 

요청이 fail로 들어왔다. 이를 ok로 변조하여 전달해보

 

 

 

정답을 찾을 수 있었다.

문제

PIN CODE Bypass

50

핵미사일 시스템 접근 권한을 획득했다! 발사만 남았다! 가자!!!

 

step1.php
step2.php

 

아무 입력을 넣으면 step2.php?admin_pass=123 로 이동 하며 "비밀번호가 일치히 않습니다." 라고 나온다.

 

그런데 첫 페이지가 step1.php, step2.php이다. 그렇다면 다음 페이지는 step3.php로 직접 이동 하면 될 것 같다.

 

step3.php

발사 버튼을 누르면 정답이 나온다.

+ Recent posts