auth 버튼을 누르면 단순히 alert() 만 띄워주게 됩니다.

실질적으로 URL을 보면 val라는 인자가 추가 되어있는데 해당 값을 2로 넘겨주면 성공하는 문제입니다.



소스를 보면 val=2는 없다 하고, union을 사용하라는 말이 있습니다.

union sql injection을 이용해 문제를 해결하면 됩니다.



Injection Pointer는 select문입니다. 

$go 변수에 알맞은 union select를 입력하면 됩니다.


rand 함수로 괄호의 개수만 다른 Query가 있지만 여러 번 반복하면 되니 하나의 Query에 집중합니다.



결국 Union SQL Injection을 하여 data[0]에 2가 오면 성공합니다.



우선 다른 숫자나 필터링된 문자열을 입력하면 Access Denied!가 나오게 되니 피해서 해결해야 합니다.



select lv from lv1 where lv=($go)

여기서 각 해결해야 할 조건에 해답은 아래와 같습니다.

  ① $go 변수가 괄호로 묶여있다.

   단순히 ()로 다시 묶어주면 됩니다.

   Ex) lv=(1) and (1=1)

  ② 공백을 사용할 수 없다.

   괄호는 공백과 유사한 역할을 합니다.

   Ex) lv=(1)and(1=1)

  ③ 2를 사용할 수 없다.

   수식을 사용할 수 있습니다.

   Ex) lv=(1)and(1=2-1)



select lv from lv1 where lv=(3)union(select(3-1)) 로 완성 시키면 됩니다.

하지만 서버에 문제로 인해 문제가 해결이 안되네요....


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

[webhacking.kr] prob 59  (0) 2018.12.20
[webhacking.kr] prob 49  (0) 2018.12.19
[webhacking.kr] prob 3  (0) 2018.12.19
[webhacking.kr] prob 36  (0) 2018.12.19
[webhacking.kr] prob 39  (0) 2018.12.19

+ Recent posts