본문 바로가기

전체 글62

LOS(Load of SQL Injection) 6번 문제 풀이 별 다를 거 없는 필터링 문제이다. 'or' 와 'and' 사용을 필터링 하고 있다. 하지만 우리에겐 좋은 대체품이 있다. or = || and = && 원래의 쿼리는 ?pw=' or id='admin' --%20 이지만 or 라는 문자가 막힐게 뻔하니, or 를 대체해서 쿼리를 짜보면 ?pw=' || id='admin' --%20 클리ㅇㅓ~~ 2020. 4. 30.
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) 4번 문제 풀이 소스코드를 살펴보면, 이번 문제는 우회해서 뚫는게 아닌 pw 값 자체를 알아내야한다. 우선 length() 함수를 이용해서 pw 의 길이를 알아내보려고 한다. select id from prob_orc where id='admin' and pw='' or id='admin' and length(pw)=8 -- 뒤쪽에 쿼리를 삽입해 참, 거짓으로 pw 의 길이와 값을 알아낼 것이다. select id from prob_orc where id='admin' and pw='' or id='admin' and length(pw)=8 -- 앞쪽의 빨간색 조건은 무조건 거짓이다 [ pw 불일치] 뒤쪽이 참이되려면 pw 길이가 8이어야 한다. 조건이 참이 되면 첫번째 if 문에 의해 Hello admin 이 출력 될.. 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.