본문 바로가기

Webhacking/Webhacking.kr

[Webhacking.kr] Old-18 풀이

https://webhacking.kr/old.php

 

Webhacking.kr

 

webhacking.kr


문제를 실행시켜보니 sql injection을 해야 하는 것 같다.

일단 아래의 view-source를 해서 알아보았다.

그림 1

위의 소스코드에서 위의 까만 글씨에서는 문제에 필요한 부분은 없고, 아래의 $_GET 부분부터 확인해보면 될 것 같다.

 

그림 2

아래의 if문 쪽을 확인해보니 idguest이면 hi guest를 출력하고,

Idadmin이면 18번 문제가 풀리면서 hi admin이 출력된다고 한다.

그리고 주석으로 admin의 넘버가 2라는 것도 알려주었다.

 

일단 위의 preg_match에서 정한 문자들이 존재하면 no hack이라는 문자열을 출력된다.

 

우리는 mysqli_query부분을 수정해주어야 한다.

 

더보기

Select id from chall18 where id=’guest’ and no= [우리가 입력]

 

위의 명령의 확인해보니 우리는 admin으로 접속해야 하는데 id가 이미 guest로 고정되어 있다.

 

그러나 뒤에 and 연산이 나오고 있고 and 연산은 모두 참이어야 참이다.

 

그럼 뒤에 오는 값을 거짓으로 만들어버리면 id=guest라는 부분도 함께 거짓이 되어버린다.

 

그 뒤에 or을 통해 admin의 넘버인 2를 넣어주면 admin으로 접속이 가능할 것 같다.

 

 

나는 no=0 or no=2를 넣어서 sql injection을 수행해주려고 한다.

(처음 no 뒤에는 false인 아무 값이나 입력해주어도 된다!)

 

 

그런데 직접 넣어보면 띄어쓰기도 no hack으로 설정되어 있다,,,

 

그래서 찾아보니 %09가 띄어쓰기를 대신할 수 있다고 생각했고 대입해보았다.

 

그림 3

그. 런. 데

위의 그림과 같이 입력란에 직접 입력하면 url 창에는 문자들이 추가되고 =가 다르게 표시되는 현상이 발생한다.

그렇기 때문에 문제를 풀이 위해서는 url 주소 뒤에 직접 입력해주어야 하며, 입력하면 아래와 같이 문제가 풀림을 확인할 수 있다.

 

'Webhacking > Webhacking.kr' 카테고리의 다른 글

[Webhacking.kr] Old-39 풀이  (0) 2021.09.09
[Webhacking.kr] Old-24 풀이  (0) 2021.09.09
[Webhacking.kr] Old-15 풀이  (0) 2021.08.01
[Webhacking.kr] Old-14 풀이  (0) 2021.08.01
[Webhacking.kr] Old-6 풀이  (0) 2021.08.01