티스토리 뷰

해킹

SQLi - webhack.teamtmp.org/level12 문제풀이

황금비비새 2012. 4. 8. 22:12




간단한 로그인 SQL injection 문제라고 생각했다가 고생 좀 했습니다.

힌트를 봅시다.

magic_quotes_gpc=off <--이건 뭔 소리일까?? 검색 해보았더니 php 에서 '(싱글쿼터)를 \'로 치환해주는 녀석이더군요. off 되어 있으니 상관 없고..

admin 으로 로그인을 하라고 하는군요.


일반적인 sql injection 구문으로 공격을 시도하니 No Hack 이라고 뜨네요.




PW : guest'--    

요렇게 입력하니 Failed 가 뜨네요.

PW : guest'#

이건 잘 되는데 말이죠.



여기서 궁금한 점 하나!

No Hack 과 Failed 의 차이는 무엇일까??


계속 공격을 시도하다가 알게된 사실은

or, and, -- 등을 필터링 하고 있다는 것입니다.



때문에 or 를 직접 입력 할 수가 없어,

인코딩 하여 공격 . . . . 공격 실패...

o/**/r  공백 필터 우회 공격 . . . . 공격 실패...

검색.. 공격.. 실패.. 검색.. 공격.. 실패.. 검색.. 공격.. 실패..


일반적인 SQL injection 공격, 우회 패턴은 도움이 되질 않았습니다.

그러다가 발견한 

False SQL injection 공격!!

False SQL injection


....
OR 비트 연산는 프로그래밍을 해본 사람이라면 대부분 알고 있을 것이다.
그리고 아까 말 했듯이 ''는 0이라 했음으로 0과 0을 OR 비트 연산을 하면 결과 값이 0이 되므로
아래와 같은 연산은 결국 False SQL injection을 성공하게 된다. 

'|0#
. . . .
  
참고 사이트 :  http://wh1ant.kr/archives/[Hangul]%20False%20SQL%20injection%20and%20Advanced%20blind%20SQL%20injection.txt

 

이제 어떻게 해야 할지 아시겠죠?? 문제는 풀렸습니다.



댓글