본문 바로가기

분류 전체보기

(156)
[Dreamhack] CSS Injection write up 지금까지 푼 웹해킹 문제 중 가장 오래 걸렸다.. CSS Injection인 만큼, 사용자 입력 값이 CSS 값으로 들어가는 부분을 눈여겨 봐야한다. 코드가 긴 만큼 핵심 코드만 살펴볼 생각이다. #!/usr/bin/python3 import hashlib, os, binascii, random, string from flask import Flask, request, render_template, redirect, url_for, session, g, flash from functools import wraps import sqlite3 from selenium import webdriver from selenium.webdriver.chrome.service import Service from sel..
[Web] php, mysql을 활용한 중복검사 구현 / 웹개발-3 중복 검사 기능을 구현하기 위해 JQeury와 Ajax를 이용했다. JQeury / Ajax JQuery는 흔히 말해 JavaScript 라이브러리이다. JavaScript를 좀 더 직관적으로 이해할 수 있고, 복잡한 문법을 간결하게 표현할 수 있게 다양한 모듈들이 존재한다. Ajax는 Asynchronous Javascript And XML의 약자로 비동기식으로 자바스크립트를 활용하여 서버와 클라이언트 간에 XML데이터를 주고 받는 기술이다. 즉, Ajax를 사용하면 전체 웹페이지를 다시 로딩하지 않은 채로 페이지 일부를 로딩할 수 있다. 비동기식으로 말이다. JQeury안에 들어 있는 Ajax를 사용했다. JQuery를 사용하는 방법은 2가지가 존재한다. 1. 원본 출처 import 2. 파일을 직접..
[Dreamhack] Client Side Template Injection write up #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver from selenium.webdriver.chrome.service import Service import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) nonce = os.urandom(16).hex() try: FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FLAG**]" def read_url(url, cookie={"name": "name", "value": "value"}): cook..
[Web] php, mysql을 활용한 회원가입 구현 / 웹개발-2 이번에 구현한 기능은 회원가입 기능이다. 위와 같은 구조를 가지고 있다. 회원가입 버튼을 누르면 회원가입 창으로 이동된다. member_register.html 회원가입 아이디 비밀번호 원하는 아이디와 비번을 입력 후 입력 버튼을 누르면 member_check.php로 데이터가 전송됨과 동시에 member_check.php파일로 리다이렉트 된다. member_check.php
[Dreamhack] CSRF Advanced write up #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for from selenium.webdriver.common.by import By from selenium import webdriver from selenium.webdriver.chrome.service import Service from hashlib import md5 import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FL..
[Web] php, mysql을 활용한 로그인 구현 / 웹개발-1 웹해킹의 기초를 탄탄히 하기 위해 개발부터 시작. 사실 전과하고 바로 보안을 접했기 때문에 개발을 해본적이 없다. 재밋겠다 하하. 👆 완성되었을 때의 모습이다. 로그인 버튼을 누를 시 로그인 성공 페이지로 리다이렉트 시킬 예정이다. 내가 짠 코드는 크케 세 가지의 파일로 이루어진다. 1. 로그인 페이지를 보여주는 html 파일 2. 로그인 버튼이 눌렸을 때 서버측 로직을 처리 해주는 php파일 3. 로그인 성공 페이지를 보여주는 php파일 먼저, 코딩 전에 사용할 DB를 만들어 놓고 가자. 회원가입은 다음 시간에 구현할 것이므로 미리 DB에 데이터를 넣어놨다. mysql> CREATE DATABASE login; mysql> USE login; mysql> CREATE table login_tb( -> ..
[Dreamhack] CSP Bypass Advanced write up #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver from selenium.webdriver.chrome.service import Service import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) nonce = os.urandom(16).hex() try: FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FLAG**]" def read_url(url, cookie={"name": "name", "value": "value"}): cook..
[Network] 포트 포워딩과 DMZ 설정 웹해킹 공부를 하다보니 개인 서버가 필요한 일이 생겨서 포트 포워딩을 찾아 보게되었다. 포트 포워딩이란? 포트 포워딩이란 외부에서로의 요청을 알맞은 포트에 보내주는 것을 말한다. 보통 가정집에는 공유기를 사용한다. 공유기에는 공인 IP를 할당해주게 되며, 나머지 전자기기에는 공유기가 사설 IP를 할당해준다. 공인 IP는 다른 IP주소들과 중복 되지 않는 유일한 IP 주소이며 사설 IP 주소는 다른 IP와 중복 되는 주소이다. 우리는 사설 IP를 할당 받기 때문에 외부에서 내가 할당 받은 사설 IP로 접근할 수가 없다. 이유로는 내가 받은 IP는 중복 되는 IP 주소이기 때문에 어느 IP로 보내는 요청인지 정확히 판단할 수 없는 것이다. 따라서 외부에서 우리의 컴퓨터 접근을 하려면 공유기가 할당 받은 공인..