CSRF란? 임의 이용자의 권한으로 임의 주소에 HTTP요청을 보낼 수 있는 취약점이다. 예를 들어, 이용자의 계정으로 임의 금액을 송금해 이득을 취하거나 관리자 계정을 공격해 공지사항 작성 등으로 혼란을 줄 수 있다. CSRF 공격에 성공할려면 공격자가 작성한 악성 스크립트를 이용자가 실행해야 한다. 이는, 공격자가 이용자에게 메일을 보내거나 게시판에 글을 작성해 이용자가 이를 조회하도록 유도하는 방법이 있다. 다시 예를 들어, 공격자가 form 태그를 사용해 http요청을 보내는 코드를 작성하고, 이용자가 이를 조회하면 공격자는 이용자에게 들키지 않고 임의 페이지에 이용자의 권한으로 요청을 보낼 수 있다. 악성 스크립트가 포함된 게시글을 작성하면은, 그 게시글을 조회한 이용자들이 공격을 당한다.
Web Hacking/Information
XSS란? 클라이언트 사이드 취약점 중 하나로, 공격자가 웹 리소스에 악성 스크립트를 삽입해 웹 브라우저에서 해당 스크립트를 실행할 수 있다. 예를 들어 게시글을 작성하는 곳에 와 같은 js코드를 넣는다면은 웹서버는 해당 스크립트를 실행하여 보여주므로 alert창이 뜨게 된다. 만약 script에 alert가 아닌 다른 공격할 수 있는 코드를 넣는다면은 심각한 취약점이 될것이다. 위는 쿠키 및 세션을 탈취하는 코드이다. 이외에 페이지를 변조하거나 위치를 이동시킬수 있는 공격코드를 작성할 수도 있다. Stored XSS Stored XSS는 서버의 데이터베이스 또는 파일 등의 형태로 저장된 악성 스크립트를 조회할때 발생하는 XSS이다. 대표적으론 게시물과 댓글에 악성 스크립트를 포함하여 업로드하는 방식이 ..
퍼센트 인코딩, uri 인코딩 이외에 html 인코딩도 있다. xss에서 src 필드 같은데에 사용되는데 예를들어 소괄호 '(' 는 html entity로 (이다. x28은 16진수이므로 (과 똑같다. 아래 링크에 특수문자를 자세히 정리한 글이 있다. https://johngrib.github.io/wiki/special-chars/ 특수문자 모음 특수문자 검색하다 빡쳐서 작성한 문서 johngrib.github.io
우리가 사용하는 웹 HTTP 프로토콜은 Connectionless와 Stateless하다. 즉, 하나의 요청에 하나의 응답만 하고(Connectionless) 상태를 계속 저장하지 못한다.(Stateless) 그래서 웹 서버는 수많은 클라이언트 등을 구별하기 위해 Cookie와 Session을 사용한다. 1. Cookie (쿠키) 쿠키는 Key와 Value로 이뤄진 일종의 단위로, 서버가 클라이언트에게 쿠키를 발급하면 클라이언트는 서버에 요청을 보낼 때 쿠키를 같이 전송한다. 예를 들어, 드림핵 서버에서 로그인을 해본 후 개발자도구로 확인하 cookie에 sessionid가 추가된 걸 볼 수 있다. 서버는 저 sessionid 쿠키 값을 기반으로 사용자를 인증할 것이다. 이 쿠키값을 그대로 복사해서 다른..
웹 해킹 문제를 풀다보면 preg_match 함수로 일부 키워드들을 필터링 한 문제들이 많이 보인다. preg_match("/admin|0x|#|hex|char|select/i",$_POST['phone']); '|'로 필터링하는 단어들을 구분하고 뒤에 i 옵션을 이용해 대소문자 구분을 하지 않는다. *정규식 참고하기 따로 알아낸 정규식들 정리 \d => 모든 숫자 \x20 => 스페이스 \& => 리터럴로 변환 즉, &문자 사용 불가능 preg_match("/or|union|admin|\||\&|\d|-|\\\\|\x09|\x0b|\x0c|\x0d|\x20|\//",$t) 이렇게 하면 %09같은거 못