문제를 보면 id 값이 admin이면 문제가 풀리고, 현재 id 값은 guest 이다. preg_match()함수를 통해 싱글쿼터(')와 더블쿼터(")는 모두 필터링 되어 있다.

no 값에 1을 넣어 보면 hello guest가 출력되는 것을 보니 guest의 no 값은 1이다.

싱글 쿼터가 필터링 된 것은 hex값을 이용하여 우회할 수 있다. id 값이 admin이여야 하므로 admin의 hex 값은 0x61646d696e 이다. 

쿼리를 /?no=2 or id=0x61646d696e  로 전송하게 되면 앞에 no 값이 거짓이기 때문에 id값은 admin이 되어 문제를 해결할 수 있다.

 

'Security & Hacking > Wargame' 카테고리의 다른 글

[LoS] orge  (0) 2020.11.06
[LoS] darkelf  (0) 2020.11.03
[LoS] orc  (0) 2019.11.29
[LoS] cobolt  (0) 2019.11.26
[LoS] gremlin  (0) 2019.11.26

Cross-Site Request Forgery : 사이트간 요청 위조

 

공격자가 피해자가 의도하지 않은 요청을 웹 사이트에 요청 하도록 하는 공격 방법이다.

공격자는 웹 사이트(대상)가 피해자를 신뢰하는 상태 이어야 한다. 

피해자의 권한을 이용하여 의도하지 않은 요청을 웹 사이트에 하는 것이다. 

공격자가 피해자에게 의도한 공격을 수행하는 스크립트를 실행하도록 한다.

웹 사이트가 피해자를 신뢰하는 상태에서 피해자가 스크립트를 실행하면 공격자가 의도한 대로 요청을 전송할 수 있다.

 

CSRF 공격 방법

웹 사이트가 HTTP 쿠키에 의해서만 사용자를 검증한다면 해당 공격에 취약할 수 있다.

웹 사이트의 동작 방식을 확인하고 어떤 요청을 했을 때 어떻게 반응하는지 등을 살펴본다.

공격자가 의도한 요청을 전송할 수 있는 html 페이지나 스크립트를 만들고, 피해자가 그 html 페이지에 접속하거나 스크립트를 실행하도록 유도한다. 이때 피해자는 웹 사이트가 신뢰하고 있는 상태여야 한다.

 

CSRF 방어 기법 

CSRF 토큰 사용 :

HTML 형태의 숨겨진 필드를 통해 추가적인 토큰을 생성하여 각 요청이 전송될 때 토큰 값이 유효한지 검증한 후 요청을 수행한다. 공격자는 토큰의 값을 결정할 수 없도록 임의의 난수로 생생해야 한다.

CAPTCHA 사용:

사용자로 부터 captcha값을 입력 받도록 하여 captcha 값을 검증 후에 요청을 수행하도록 한다.

 

'Web > Vulnerability' 카테고리의 다른 글

SSRF  (0) 2020.11.10

+ Recent posts