본문 바로가기

전체 글

(156)
[Webhacking.kr] old-26 write up 웹개발하면서 Webhacking.kr을 조금씩 풀어볼 생각이다. 젤 쉬운 것부터 간단하게 해당 페이지 로직을 처리하는 코드를 보여주는 것 같다. php로 작성된 코드이며 GET요청 시 id로 들어온 값을 필터링 하고있다. preg_match 함수는 정규 표현식을 검사하는 php 내장 함수이며 /admin/ 을 통해 admin이란 문자열을 정규표현식 객체로 만들어 필터중이다. 이 문제는 id에 admin이 올바르게 전달되면 끝난다. 취약점 분석 url로 전송된 문자는 모두 url encdoing이 되어 서버로 전송되며 서버가 해석하기전에 url decoding을 수행 후 해석하게 된다. 그러나 서버측에서 또 url decoding을 불필요하게 하고 있기 때문에 이를 통해 우회가 가능하다. %61%64%6d..
[Web] php, mysql을 활용한 주소 검색 구현 / 웹개발-6 회원가입 기능에 주소를 추가할 수 있도록 주소 검색 기능을 넣을 것이다. 또한 마이페이지에도 추가한 주소가 출력 시킬 예정이다. member_register.html 회원가입 이름 아이디 비밀번호 주소 먼저 주소 폼을 추가시켜줬다. 찾기 버튼을 누르면 address()함수가 호출되어 작업을 처리한다. 👆 다음과 같이 주소를 찾을 수 있는 새로운 창이 뜬다. 이 창은 address.php로 작성된 페이지이다. address.php 다음과 같이 작성되었으며, 도로명 주소를 검색할 수 있다. 폼에 도로명 주소를 검색 후 버튼을 누르면 address_ok.php라는 페이지로 GET 전송 되게 된다. address_ok.php 원하는 주소를 클릭하면 detail.php로 이동하게 되며 상세주소를 입력받는 폼이 나..
[Web] php, mysql을 활용한 회원 프로필 조회 구현 / 웹개발-5 회원 이름을 검색하면 그에 맞는 회원 정보를 창에 보여주는 기능을 구현했다. 프로필 조회 하이퍼 링크를 클릭 시 이동한다. select.php 위와 같이 사용자 이름을 입력 받는 폼이 하나 존재한다. 해당 폼에 입력 후 조회 버튼을 누르면 해당 사용자 이름을 가진 유저의 프로필이 조회가 된다. 비동기적으로 서버와 ajax 통신을 한다. member_select.php에 데이터를 POST 형식으로 보낸 후 응답 데이터를 받아 div태그를 생성해 창에 보여준다. member_select.php
[Web] php, mysql을 활용한 회원정보 수정 구현 / 웹개발-4 login_success 로그아웃 마이페이지 프로필 조회 로그인 성공 창에 마이페이지로 이동할 수 있는 하이퍼링크를 생성했다. 마이페이지로 이동하면 회원 정보를 수정할 수 있다. mypage.php
[Dreamhack] DOM XSS 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..
[Dreamhack] XS-Search write up #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for from selenium.common.exceptions import TimeoutException from urllib.parse import urlparse 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("..
[Dreamhack] Relative Path Overwrite Advanced write up 이전 Relative Path Overwrite과 vuln의 코드만 다르다. vuln.php filter.js가 로드 되지 않으면 param에 "nope !!" 문자열이 들어가게 된다. 000-default.conf RewriteEngine on RewriteRule ^/(.*)\.(js|css)$ /static/$1 [L] ErrorDocument 404 /404.php 아파치 서버의 URL Rewrite를 정의한 파일이다. /로 시작하고 .js로 끝날 경우 404에러를 반환하며 /404.php로 리다이렉션 시킨다. 404.php 요청 URL을 가져와 not found라는 문자열과 함께 반환한다. 문자를 raw하게 그대로 리턴하기 때문에 스크립트가 삽입 시 실행될 확률이 있어 보인다. 취약점 분석 fi..
[Dreamhack] Relative Path Overwrite write up index.php Relative-Path-Overwrite Home Vuln page Report 기본적으로 page의 인자로 오는 값에 따라 페이지를 렌더링 하고 있다. index.php에서는 '..', ':', '/'를 필터링 하고 있기 때문에 path Traversal로 인한 LFI 취약점은 일어나지 않는다. vuln.php filter.js를 로드하고 있다. filter.js에서는 'script', 'on', 'frame', 'object' 키워드 필터링을 통해 XSS 공격을 막고 있다. vuln.php에서는 DOM객체로 html에 접근하여 param이라는 ID를 갖는 태그에 param에 입력받는 값을 html로 추가하고 있다. report.php / http://127.0.0.1/ Report..