본문으로 바로가기

[Webhacking.kr]18번

category Wargame/webhacking.kr 2017. 7. 31. 01:57


18번 문제를 클릭하면 나오는 화면이다.


대문에 SQL INJECTION이라고 떡하니 쓰여져있다.


소스를 주니 한번 따라가보자


]

음... 여러가지를 필터링 하고있다. 그리고 쿼리부분에서 no변수의 값에 쿼터가 없어 취약점이 발생할 수 있음을 알 수 있다.


우선 id가 guest라고 떡하니 쓰여져있고 no와 and로 묶여있으니 or로 분리하면 되겠구나!


( A and B ) or C


이런느낌?


우선 좌측이 거짓이 되어야지 C가 참이 되면서 참의 값을 가져올테니 GUEST를 찾아보자!



사실 찾지 않아도 되지만 찾고싶었다.



아무튼 숫자 1이 guest의 no임을 알 수 있다.


자 이제 명령을 넣어보자


0 or id='admin'



앙?


안된다.


소스를 다시보니 스페이스가 막혀있다...


스페이스가 필요한데.... 우회법을 찾아보자 (http://g0pher.tistory.com/211)


스페이스 대신 사용할 수 있는것은 


탭(Tab) 라인피드(LF) 주석(/**/) 괄호()


탭은 그냥 막혀버렸고 주석의 /도 필터링 괄호도 필터링 되었기 때문에 라인피드를 사용하자!


제어문자이기 때문에 아스키코드를 이용해야한다.


0%0Aor%0Aid='admin'





응....?


왜 안될까...?


그것은 바로 magic_quotes_gpc 라는 PHP 기능때문이다.


이는 자동적으로 쿼터에 슬래시(/)를 달아 사용할 수 없게 만들기 때문이다.


그렇기 때문에 이를 우회하려 했으나 함수를 사용할 때 필요한 괄호마저 필터링 되었음으로


그쯤에서 그만두고 guest의 no인 1 주변에서 admin의 no를 찾았다.








'Wargame > webhacking.kr' 카테고리의 다른 글

[Webhacking.kr]23번  (0) 2017.07.31
[Webhacking.kr]20번  (0) 2017.07.31
[Webhacking.kr]12번  (0) 2017.07.30
[Webhacking.kr]6번  (0) 2017.07.30
[Webhacking.kr]24번  (0) 2017.07.19