document.onkeypress = getKey;

7번 문제는 어렵다고 생각하지 말자 할 수 있다.



auth를 누르는 순간 바로 access denied가 뜬다.


admin으로 들어가고 싶다면 val=2를 입력해야되는 것 같고

index.phps에 친절히 소스코드가 있단다...ㄱㄱ



union을 쓰라고 되어있다.

일단 한 줄 한줄 씩 해석해 보자.


1. get 방식으로 받은 val가 go 변수에 저장된다.

2. go 가 비어있다면 val=1로 초기화한다.

3. go를 ck변수에 저장한다.

4. ck에 *이나 / 가 있으면 필터링 한다.

5. 주석인 -- 나 숫자 2, substring과 공백 등등을 제외한다.

6. 1~5중 하나를 골라 rand 변수에 저장한다.

7. rand가 1~5에 따라서 괄호의 갯수가 다르다. (injection 할 때 괄호의 갯수를 다르게 하면 된다)

8. mysql 구문을 result에 저장하고 이를 data 배열에 저장한다.

9. data[0]이 2가 되면 문제가 풀린다.


매우 친절하게 작성되어 있었다.

그러니까 우리는 val 에다가 인젝션을 할 payload를 생각해보자.


1,2가 막혀있으니까 일단 0으로 막고

val = 0) union select (2

라고 작성하면 될 거 같다.


근데 공백이랑 2가 막혀있으니까 %0a 랑 3-1로 바꾸자


?val=0)%0aunion%0aselect%0a(3-1

하니까 안된다.

새로고침 많이 해서 rand값이 1이 되도록 하고 (괄호때문에...) 하면 된다.




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

webhacking.kr 57번  (0) 2017.02.20
webhacking.kr 6번  (1) 2016.08.02
webhacking.kr 5번  (0) 2016.08.02
webhacking.kr 4번  (0) 2016.07.31
webhacking.kr 3번  (0) 2016.07.31

+ Recent posts