Web

    SQL injection이란? (with Dreamhack)

    SQL injection이란? (with Dreamhack)

    오늘은 드림핵에 있는 강의 내용을 요약하면서, sql injection에 대해서 알아볼 것이다. 1. DATABASE (DBMS) 먼저 sql injection을 배우기 전에 먼저 database지식이 있어야 한다. Database는 일상생활에서 여러 가지 정보를 컴퓨터에 기록하는 데 사용한다. 그리고 이를 관리하는 것이 DBMS라고 하는 것이다. Database에 저장된 내용을 이용하여 수정, 삭제, 기록을 하는 것이 DBMS이다. DBMS는 관계형(Relational), 비관계형(Non-Relational) 으로 크게 나누어진다. Relational Database : Table 형식, EX. MySQL, MariaDB, PostgreSQL, SQLite Non-Relational Database :..

    Dreamhack - Flask-Dev (write-up)

    Dreamhack - Flask-Dev (write-up)

    오늘은 flask-dev 풀이를 해볼 것이다. 이 문제는 일단 flask의 디버그 모드에서 대해 알아야 한다. app.run(~~,debug=True)이면 flask debug모드로 실행할 수 있다. 아래는 debug=True라서 디버그모드 웹이다. #!/usr/bin/python3 from flask import Flask import os app = Flask(__name__) app.secret_key = os.urandom(32) @app.route('/') def index(): return 'Hello !' @app.route('/') def file(file): return open(file).read() app.run(host='0.0.0.0', port=8000, threaded=True..

    Dreamhack - file-csp-1 (write-up)

    Dreamhack - file-csp-1 (write-up)

    오늘은 file-csp-1을 풀어볼 것이다. 이 문제는 csp를 이해하고, 어떻게 설정하는지 알면 된다. $사전 조사 일단은 주어진 파일들을 살펴보자. #!/usr/bin/env python3 import os import shutil from time import sleep from urllib.parse import quote from flask import Flask, request, render_template, redirect, make_response from selenium import webdriver from flag import FLAG APP = Flask(__name__) @APP.route('/') def index(): return render_template('index.htm..

    Dreamhack(Wargame.kr) - Login filtering

    Dreamhack(Wargame.kr) - Login filtering

    오늘은 드림핵의 login filtering문제를 풀어볼 것이다. $ 사전 조사 먼저 웹사이트를 확인 해보자. 그냥 id pw를 입력하는 칸이 나온다. get source로 php를 확인해보자. 위의 php는 로그인을 성공하면 flag를 준다. 밑에 주석에서 아래처럼 사용자 정보를 준다. $ 취약점 분석 이제 취약점을 찾아보자. 일단 로그인을 위 정보로 하면 flag를 주는데, id가 guest, blueh4g 이면 계정이 막혔다고 echo한다. 그런데 그 필터링을 하는 if에서 취약점이 발생한다. 만약 id를 guest가 아닌 GUEST처럼 대문자를 넣으면, if문을 통과하여 db에 guest로 들어간다.(여기서 php에 어떻게 들어가는지 몰라서 쓸데없이 삽질을.....ㅠㅠ) 그러면 아래처럼 넣으면 로..

    Dreamhack - simple-ssti(Write-up)

    Dreamhack - simple-ssti(Write-up)

    오늘은 드림핵의 simple-ssti라는 문제를 풀어볼 것이다. 문제는 2단계인데 굉장히 쉬운 문제이다. 정말 ssti의 기초만 알아도 풀수 있는 문제이다. 먼저 python코드를 살펴보자. #!/usr/bin/python3 from flask import Flask, request, render_template, render_template_string, make_response, redirect, url_for import socket app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' app.secret_key = FLAG @app.route('/') def index(): return..

    JavaScript - HTML과 JS

    JavaScript - HTML과 JS

    1. WRITE 먼저 html과 js의 쓰기 법이 차이이다. 아래의 코드를 살펴보자. HHJ JS 5+5 글자를 쓰면 html, js가 둘다 비슷하다. 만약 x+y처럼 산수를 하면 두 결과가 다르다. 위를 보면 js에서는 document.write(5+5);를 하면 동적이라서 5+5를 한 값 즉 10이 나온다. 하지만 html은 정적이라서 5+5를 쓰면 '5+5'라고 그대로 나온다. 2. event js에는 event라는 것이 있다. 무언가를 동작하면 어떤걸 동작하게 하는 것이다. 이벤트는 대략 10~20개 정도의 이벤트가 정의 되어있다. 예를 들면 onclick(), onchange(), oninput()등이 있다. event안에는 무조건 js가 들어가야 한다. 위를 실행하고 버튼을 누르면 1를 알람,..