ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Webhacking.kr> old-07
    Wargame/Webhacking.kr 2021. 11. 15. 17:38

    old-07

    'auth' 버튼을 누르면 

    "접근이 거부되었다"는 메시지를 출력한다.

     

    view-source를 통해 페이지 소스 코드를 살펴보면

    GET 방식으로 전달받은 'val'의 값을 변수 '$go'라 한다.

    $go의 값에서 2, -, +, from, _, =, \s, *, / 를 필터링한다.

    그리고 1부터 5까지를 랜덤으로 정해 각기 다른 쿼리를 실행한다.

    각기 20%의 확률이므로 $rand가 1일 경우에 맞춰 문제를 풀었다.

    그리고 $data[0]가 2가 되어야 문제를 해결할 수 있다.

     

    2를 만들기 위해서는 '1+1', '3-1' 등과 같은 방법은 연산자가 필터링되기 때문에 사용할 수 없다.

    2를 만들기 위해서는 chr(50), mod(5,3) 등을 이용할 수 있다.

     

    ?val=char(50)을 입력하면

    "query error"라는 메시지를 출력한다.

    괄호가 필터링 되지 않았기 때문에 괄호를 사용해서 문제를 풀 수 있다.

    "select * from table"은 "select(*)from(table)"과 쿼리가 동일하다는 점을 이용할 수 있다.

     

    ?val=1)union(select(chr(50))을 입력하면

    문제가 풀리게 되는데 "nice try"라는 메시지를 출력할 수 도 있다.

    이는 1~5까지의 숫자가 랜덤이기 때문에, 새로고침을 하다보면 문제를 해결할 수 있다.

     

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

    <Webhacking.kr> old-09  (0) 2021.11.18
    <Webhacking.kr> old-08  (0) 2021.11.16
    <Webhacking.kr> old-05  (0) 2021.11.14
    <Webhacking.kr> old-06  (0) 2021.11.11
    <Webhacking.kr> old-03  (0) 2021.11.09
Designed by Tistory.