- 조건.
- no의 입력값을 preg_match (매치하는 값 찾는 함수)를 통해 매치되는 값이 있으면 “no hack” 이라는 exit문이 실행됨
- 필터링되는 문자들
- 공백, /, 괄호, |, &, select, from, 0x
- 소스코드에 admin의 no은 2라는 힌트가 제공되었음.
- 폼에 1을 적어서 제출하면 hi guset가 실행되는것을 확인, 또한 GET요청이기에 주소창에 no=1이 추가가 된것을 확인함.
- guest의 id값은 1임, where절에 id가 ‘guest’라는게 명시되어있기때문에 no값을 2로 바로 입력하더라도 실행이 되지않음
- id=’guest’ and no=1 의 결과값은 True인데 이 값을 틀리게 하고 or 연산자를 이용해 no=2 라는 값만 주게 된다면 어떻게 될까?
- 공백문자가 필터링되고있기때문에 공백을 우회해서 사용할것이다.
- 공백문자를 URL Encoding 하면 %09 라는 값이 나옴 이것을 이용하여 SQL Injection을 시도함
- 일단 첫 검사식을 일부로 틀리게 하고 or 연산자로 두번째 검사식(검증식)을 True로 할것이다.
- where id=’guest’ and no=3 or no=2 를 URL Encoding의 공백을 넣으면
- no=3%09or%09no=2 을 index.php? 뒤에 넣어줘 GET요청을 보냄
답 : no=3%09or%09no=2
- 조건.
- no의 입력값을 preg_match (매치하는 값 찾는 함수)를 통해 매치되는 값이 있으면 “no hack” 이라는 exit문이 실행됨
- 필터링되는 문자들
- 공백, /, 괄호, |, &, select, from, 0x
- 소스코드에 admin의 no은 2라는 힌트가 제공되었음.
- 폼에 1을 적어서 제출하면 hi guset가 실행되는것을 확인, 또한 GET요청이기에 주소창에 no=1이 추가가 된것을 확인함.
- guest의 id값은 1임, where절에 id가 ‘guest’라는게 명시되어있기때문에 no값을 2로 바로 입력하더라도 실행이 되지않음
- id=’guest’ and no=1 의 결과값은 True인데 이 값을 틀리게 하고 or 연산자를 이용해 no=2 라는 값만 주게 된다면 어떻게 될까?
- 공백문자가 필터링되고있기때문에 공백을 우회해서 사용할것이다.
- 공백문자를 URL Encoding 하면 %09 라는 값이 나옴 이것을 이용하여 SQL Injection을 시도함
- 일단 첫 검사식을 일부로 틀리게 하고 or 연산자로 두번째 검사식(검증식)을 True로 할것이다.
- where id=’guest’ and no=3 or no=2 를 URL Encoding의 공백을 넣으면
- no=3%09or%09no=2 을 index.php? 뒤에 넣어줘 GET요청을 보냄
답 : no=3%09or%09no=2