보호되어 있는 글입니다.
1. 특정 값을 비교해야 하는 상황에서 사용할만한 것들 select 'admin'='admin'; # True select 'admin''admin'; # True (NULL도 비교할 수 있다.) select 'admin'!='admin'; # False select 'admin''admin'; # False select 'admin'' into dumpfile '/var/www/html/ch4njun.php'; select load_file('/etc/passwd'); # CVE-2016-6662 set global general_log_file = '/var/www/html/ch4njun.php'; set global general_log = on; select ''; 6. Union와 같이 내가 원..
SQL Injection? 사용자 입력 데이터가 SQL Query에 포함되어 의도되지 않은 Query문이 실행되는 취약점. SQL Injection을 방지하기 위해서는 사용자 데이터가 SQL Query로써 동작하지 못하도록 해야한다. SQL Injection 공격은 대표적으로 두 가지 목적을 가진다. 1. 정보 탈취 (기밀성 침해) 2. 정보 수정/삭제 (무결성 침해) 결국 기존에 권한이 없는 DB 정보에 접근하는 것이 공통점이다. 이러한 공격을 위해서 다음 과정을 거쳐 공격을 수행하게 된다. 1. SQL Injection 취약점 발견 - HTTP Response Status Code를 통해 오류가 발생하는지 확인 - DBMS의 오류 메시지를 통해 취약점 가능성 확인 - 웹 어플리케이션에서 변조된 SQL..
CSP? Content-Security-Policy의 약자로, XSS 공격이 발생했을 때 그 피해를 줄이고 공격시도를 보고받을 수 있다. 공격자가 Web 사이트에 허용되지 않은 Script를 삽입하거나 공격자의 외부 페이지(Server)에 HTTP Request를 보내는 것을 막을 수 있도록 Response Header에 추가하는 정책이다. 만약 페이지가 PHP나 Python, CGI 등 동적 기능을 사용하지 않는 정적인 웹 페이지라면 CSP 정책을 HTML 태그로도 지정할 수 있습니다. 이는 바뀌지 않는 자원들을 별도의 HTTP 서버 설정 없이 HTML 페이지 내에서 지정할 수 있도록 합니다. 호스트와 포트번호로 허용여부를 결정한다. (ex: *.dreamhack.io:443) URL scheme로 허..
CSRF? Cross Site Request Forgery의 약자로, 공격자가 악의적으로 사용자의 의도와 다르게 다른사이트에서 HTTP Request를 보내는 공격 공격자는 CSRF를 통해 Cookie/Session을 가져야만 사용할 수 있는 기능에 대해 Request를 보낼 수 있다. CSRF 공격이 가능한 최소조건은 아래와 같다. 1. 해당 Web 페이지가 Cookie를 사용한 인증 방식이여야 한다. (Cookie에 Session값을 저장하는 것도 결국 Cookie를 사용한 방식이기 때문에 가능하다.) 2. 공격자가 사전에 알 수 없는 파라미터가 있으면 안된다. (자동입력방지문자, 패스워드 변경기능에서 기존 패스워드와 같은 항목이 이에 해당된다.) 아래 코드에 대해서 사용자가 실행하게되면 CSRF 취..
1. 잘못된 정규표현식 우회 // data:,alert('ch4njun') 와 같이 &comma를 통한 문자인코딩을 활용 할 수 있다. 2. 키워드 필더링 우회 // r 는 문자인코딩을 통해 r로 바뀐다. // src에 about:을 통해서도 onerror를 발생시킬 수 있다. 사실 중요한 부분은 아닌거같... 3. // 2번에서 나오지 않은 것들에 대해서 소개해봤다..ㅎ 4. 마침표(.), 키워드 필터링 우회 this['al'+'ert']((({'\u0063ookie':x})=>x)(self['\x64ocument'])) // [ ]를 사용해 .을 대신할 수 있고, [ ] 내부에서는 문자열을 사용하기 때문에 +를 통해 키워드 필터링을 우회할 수 있다. // \x64는 문자 인코딩을 통해 d로..