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 |