power-girl0-0

login filtering 본문

War game/wargame.kr

login filtering

power-girl0-0 2021. 2. 1. 15:59
728x90

http://www.wargame.kr/challenge

 

Wargame.kr - 2.1

 

www.wargame.kr


 문제 

문제 설명을 보면 계정은 있지만 차단되어 있어서, 필터링을 우회해서 로그인 하라고 적혀있다.

 

start를 눌러 문제를 확인해보자.

로그인화면을 확인할 수 있다.


 소스 코드 분석 

로그인 화면 밑에 get source를 눌러서 소스를 분석해보자.

id와 ps의 변수의 값이 있으면, lib.php를 포함시킨다.

 

mysql을 사용할 때 연결하는 코드부분이다.

 

위 코드는 mysql_real_escape_string 함수로 필터링하여 각각 id와 ps 변수에 넣어준다.

또한, $row에 저장된 id와 ps에 대한 값을 가져오는 쿼리문을 넣는 부분이다.

 

해당 부분에서는 $row에 id변수 값이 존재할 경우,  id가 guest 또는 blueh4g일 경우 'you account is blocked'라고 메시지를 출력하고 아닐 경우는 key값을 출력하도록 작성된 코드이다.

 

이외에 아래 주석부분의 코드에는 guest와  blueh4g 계정에 대한 정보만 확인하고, 나머지는 pass하도록 하겠다.


 풀이

위 소스 코드를 분석하니, 해당 문제를 해결하기 위해 조건이 있는 것을 알 수 있다.

1. 입력받아온 id가 $row의 id변수에 존재해야 한다.

2. id가 guest, blueh4g는 차단당한 계정이다.

 

하지만, 현재 우리가 알 수 있는 계정은 guest와 blueh4g밖에 없기 때문에  이를 이용해야 한다.

 

해당 페이지소스 코드를 보면 mysql함수를 사용된 것을 보아 mysql로 구현된 페이지임을 알 수 있다. 

여기서 한가지 알아야 할 점은, mysql은 대소문자를 구분하지 않는다는 것이다.

 

즉, guest를 대문자로 써도 존재하는 계정으로 나타나며, guest를 필터링하는 조건문은 소문자만 확인하므로 key값을 얻을 수 있는 것이다.

 

따라서, id는 Guest로 적고 pw에는 guest로 적으면 flag값을 얻을 수 있다.

 

문제 클리어!!

728x90

'War game > wargame.kr' 카테고리의 다른 글

fly me to the moon  (0) 2021.02.08
WTF_CODE  (0) 2021.02.03
QR CODE PUZZLE  (0) 2021.02.01
flee button  (0) 2021.01.31
already got  (0) 2021.01.31
Comments