개념정리○ SQL InjectionSQL Injection은 웹 어플리케이션에서 입력 데이터의 유효성 검증을 하지 않아서 개발자가 의도하지 않은 동적 쿼리를 생성하여 DB 정보를 열람하거나 조작할 수 있는 보안 취약점이다. 웹 어플리케이션은 유저의 행동(클릭, 입력 등)에 따라 DB에 있는 데이터를 서로 다르게 표시한다. 이를 위해 Query는 유저가 입력한 데이터를 포함하여 Dynamic 하게 변하므로 개발자가 의도하지 않은 정보를 열람할 수 있게 된다. 예를 들어 다음 쿼리문을 이용해서 로그인을 수행한다고 해보자.select * from user where id = "{$id}" and pw = "{$pw}"만약, admin 계정으로 로그인하고 싶은 상황이라면 admin 계정에 맞는 id와 pw를 입..
개념정리○ WAF웹 방화벽(Web Application Firewall, WAF)은, 일반적인 네트워크 방화벽 (Firewall)과는 달리 웹 애플리케이션 보안에 특화되어 개발된 솔루션이다. 웹 방화벽의 기본 역할은 SQL Injection, Cross-Site Scripting(XSS)등 웹 공격을 탐지하고 차단하는 것이다. 웹 방화벽은 직접적인 웹 공격 대응 이 외에도 정보유출방지솔루션, 부정로그인방지솔루션, 웹사이트위변조방지솔루션 등으로 활용이 가능하다. 정보유출방지솔루션으로 웹 방화벽을 이용할 경우, 개인정보가 웹 게시판에 게시되거나 개인 정보가 포함된 파일 등이 웹을 통해 업로드 및 다운로드 되는 경우에 대해서 탐지하고 이에 대응하는 것이 가능하다. 문제분석 & 풀이SQLi 으로 WAF를 우회하..
문제분석 & 풀이admin으로 로그인하는 것이 목적이다. Login 페이지는 존재하지만, sign up 페이지가 존재하지 않아서 계정을 만들 수 없다. users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG}코드를 확인해보면, guest 계정이 존재한다. guest로 로그인하면 admin이 아니라는 문구가 뜬다. 세션을 쿠키를 이용해서 관리했으므로 쿠키를 확인했다. [개발자 도구]로 쿠키를 확인하면 sessionid 라는 쿠키가 있다. @app.route('/login', methods=['GET', 'POST'])def login(): if request.method == 'GET': return render_te..
문제분석 & 풀이HTML 파일을 열면, 호박을 클릭하라는 메시지가 나온다. 클릭하고 페이지 아래를 보면 10000 → 9999로 숫자가 줄어든 것을 확인할 수 있다. 느낌 상 9999번 더 클릭해야지 flag를 획득하는 구조인 것 같다. 따라서 10000번을 클릭하는 간단한 javascript 코드를 만들어서 실행하자. [개발자도구]로 [그림]과 같이 호박 id를 알아냈다. [console] 탭으로 이동해서 [그림]와 같이 10000번 클릭하는 코드를 작성하고 실행했다.
문제분석 & 풀이힌트를 보면 "개발자도구의 source 탭을 이용하라"라고 한다. 주어진 파일이 html 파일인 것을 통해서 html 파일에 정의된 html, js 코드를 분석하는 문제라고 추측할 수 있다. index.html을 열면 패션 브랜드 느낌의 페이지가 등장한다. 힌트에서 요구한 대로 [개발자도구 (F12)] → [Sources] 탭으로 접속했다. [그림]을 보면 html, js, css 파일을 확인할 수 있다. [개발자도구] 하단에 위치한 [Search] 창을 이용해서 "DH{"를 입력했다.