본문 바로가기

Wargame12

LOS(Load of SQL Injection) 5번 문제 풀이 3번 문제와 굉장히 유사한 것 같은데, 소스코드에 스페이스(/ /) 가 필터링 되어있다. 이제 우린 스페이스바 와 %20 을 사용하지 못한다. 그렇다고 해서 우회를 할 방법이 없는 것이 아니다. (주석, 괄호 등등) 우회 방법 중 하나인 tab(%09) 를 사용해보자. 쿼리문에서 공백이 들어가야할 부분에 %09만 넣어 주었다. pw=%27%09or%09id%09=%09%27admin%27%09--%09 가볍게 필터링을 우회해주면서 클리ㅇㅓ~~ 2020. 4. 30.
LOS(Load of SQL Injection) 3번 문제 풀이 소스코드를 보면, 몇가지 특수문자들이 필터링 되어있다. 스을쩍 훑어보면 no 파라미터에 1을 주면 guest 가 출력된다. (즉, no=1 은 게스트이다) 그렇다면, no 에 다른 번호를 준 후 or 연산자를 이용해서 id='admin' 을 하고 싶지만 싱글쿼터( ' ) 가 필터링 되어있다. 이걸 우회하는 방법 중 하나가 chr() 함수를 이용하는 것이다. char() 함수는 인자로 어떤 문자의 아스키코드값을 주면 해당 문자를 반환한다. ex) char(97) == 'a' 따라서 char(97,100,109,105,110) = 'admin' 이므로 ?no=2 or id=char(97,100,109,105,110) 을 입력해준다. --> no가 2 거나 id가 admin 인경우 를 뜻한다. id 파라미터에.. 2020. 4. 30.
LOS(Load of SQL Injection) 2번 문제 풀이 소스코드를 살펴보면, 괄호가 필터링 되고있다. 조건은 id 와 pw 가 일치할때 id가 'admin' 이면 클리어다. 기본적인 주석을 사용한 인젝션을 해보았다. 주입한 쿼리문 --> id=admin' --%20 주석 뒤에 공백이 있어야 하기 때문에 %20을 넣어주었다. (%20은 공백) 깔끔하게 클리ㅇㅓ~~ 2020. 4. 30.
LOS(Load of SQL Injection) 1번 문제 풀이 우선 소스코드를 살펴보면, preg_match 함수로 특정 문자열을 필터링하고있다. 그리고, 입력받은 id 와 pw 파라미터를 이용해 항상 참이 되는 쿼리를 만들면 될 것 같다. [ ' ] 싱글쿼터 우회를 위해 \[백슬래시]를 사용해서 쿼리문을 참으로 만들어보았다. ~~URL~~/~~.php?[ 이부분에 인젝션을 하면 된다. ] 즉, ~~URL~~/~~.php?id='\' and pw=' or 1#' 이런 식으로 쿼리문을 삽입하면, \[백슬래시] 부터 \' and pw=' 까지 문자열로 인식되고 최종적으로 클리ㅇ ㅓ~~ 2020. 4. 30.