Iriton's log

[webhacking.kr] old-27 본문

WebHacking/WarGame

[webhacking.kr] old-27

Iriton 2024. 5. 29. 15:25

https://webhacking.kr/challenge/web-12/

 

Challenge 27

 

webhacking.kr

 

웹에 들어가, 소스 코드를 확인해 보았다.

여기서 ?view_source=1 를 클릭하여 상세 코드를 볼 수 있었다.

잘은 모르겠지만 대충 아이디가 guest면 guest를 반환하고

admin이면 문제가 해결되는 거 같다.

 

구글링해 본 결과

if(preg_match("/#|select|\(| |limit|=|0x/i",$_GET['no'])) exit("no hack");

=> preg_match 함수를 통해 select, limit 등 문자열을 필터링하고 no hack을 출력.

 

$r=mysqli_fetch_array(mysqli_query($db,"select id from chall27 where id='guest' and no=({$_GET['no']})")) or die("query error");

=> chall27 테이블에서 가져온 id를 가져오는데, id의 no가 guest가 아닐 경우 querry error를 출력하고 종료.

 

그리고 주석을 통해서 admin의 no가 2임을 알려주고 있다.

쿼리문을 통해 로그인을 우회하는 문제라고 한다.

 

"select id from chall27 where id='guest' and no=({$_GET['no']})"))

위 구문을 활용해야 된다.

$_GET['no']를 통해 사용자의 아이디 입력을 받는 것으로 추정되는데

여기에 0) or no 2를 입력하고 뒤에 코드를 주석처리 해 주면 우회가 가능하다.

 

그 방법은 다음과 같다.

=을 like로,

공백은 %09로

2 이하는 주석 처리하기 위해 공백--공백으로

우회하여 주소 검색창에 입력하면 된다.

 

저 부분에 내가 입력한 아이디가 뜨게 되는데 저기에다 우회 코드를 입력해 주면 되는 거다.

아이디에 바로 입력하는 방법은 안 될까 시도해봤는데

괄호가 포함되지 않아서 실패했다.

 

'WebHacking > WarGame' 카테고리의 다른 글

[webhacking.kr] old-34  (0) 2024.05.29
[Dreamhack] Beginner: pathtraversal  (0) 2024.05.22
[Dreamhack] Beginner: Flying Chars  (0) 2024.05.01
[Dreamhack] Beginner: php7cmp4re  (0) 2024.05.01
[Dreamhack] Lv.1 Command Injection Advanced  (1) 2023.11.21
Comments