프롤로그어제것도 그렇고 딱히 글 쓸 생각은 없었는데 curl 이랑 Dreamhack Tools 쓰는 거 정리도 할 겸 라이트업 작성 문제https://dreamhack.io/wargame/challenges/73 blind-commandRead the flag file XD Reference Web Hackingdreamhack.io 코드 및 분석#!/usr/bin/env python3from flask import Flask, requestimport osapp = Flask(__name__)@app.route('/' , methods=['GET'])def index(): cmd = request.args.get('cmd', '') if not cmd: return "?c..
프롤로그버프 스위프 사용법을 이제야 다시 확인한 기분;;저거 안 돼서 억울해 죽을 뻔했다. 문제https://dreamhack.io/wargame/challenges/1151 BypassIFDescription Admin의 KEY가 필요합니다! 알맞은 KEY값을 입력하여 플래그를 획득하세요. 플래그 형식은 DH{...} 입니다.dreamhack.io 코드 및 분석app = Flask(__name__)try: FLAG = open("./flag.txt", "r").read()except: FLAG = "[**FLAG**]"일단 flag.txt로부터 파일을 읽고 해당 내용을 FLAG 라는 변수에 저장한다.KEY = hashlib.md5(FLAG.encode()).hexdigest()gue..
프롤로그bandit 문제풀이저번 비밀번호는 dfwvzFQi4mU0wfNbFOe9RoWskMLg7eEcuniq, sort, | 문제다음 단계로 가는 비밀번호는 data.txt 파일에 저장되어 있는데, 딱 한 번만 발생하는 유일한 라인에 저장되어 있다(?) sort파일의 내용을 정렬하는 데 사용된다. 기본적으로 sort는 텍스트 파일의 줄을 기준으로 정렬하며, 다양한 옵션을 사용하여 정렬 방식을 세부 조정할 수 있다.sort [옵션] [파일명]이렇게 사용할 수 있는데, 옵션을 좀 보자.-n : 숫자대로 정렬한다.sort numbers.txt #기본 정렬sort -n numbers.txt #숫자 정렬원래는 텍스트 기반 정렬이라서 숫자가 있을 시 애매해졌는데, 숫자 정렬만 할 거라면 -n 을 켜줘야한다. -r..
프롤로그bandit 문제 풀이저번 비밀번호는 MNk8KNH3Usiio41PRUEoDFPqfxLPlSmxls -al, cat, cd 문제다음 단계로 가는 비밀번호는 inhere 디렉터리 내부에 숨겨진 파일로 존재한다. 풀이과정단순히 ls -l 을 하면 숨겨진 파일은 안 나온다. 숨겨진 파일은 .으로 숨겨져 있기에, ls -al을 통해야만 숨겨진 파일을 알아낼 수 있다. 일단 접근부터 하자ssh bandit3@bandit.labs.overthewire.org -p 2220MNk8KNH3Usiio41PRUEoDFPqfxLPlSmx로 접속한 다음에 ls -al를 해보자.문제에서 inhere에 있다고 했으니까, 다시 inhere에 들어가서 ls -al을 해보자.cd inherels -al그러면 저기 Hiding-..
프롤로그하루 한 문제씩 드림핵을 풀기에는 지금, 한 문제 푸는 데에 너무 오래걸린다.할 일은 많은데, 그래서 다른 워게임들도 풀어보려고 찾았고, webhacking.kr를 찾아서 풀어보려고 한다.1번 문제는 풀었으나, 너무 쉬웠어서 2번문제 부터 풀려고 한다. 문제 및 소스코드처음 들어갔을 때는 그냥 검정화면에, view-source 가 보인다view-source를 누르면view-source 풀이전략사이 부분을 보면파라미터로 admin을 입력이 되면 문제가 풀릴 것이다. 다만 그 위에, 파라미터로 admin이 입력되면 no!가 입력이 될 터이니 그것을 우회해야한다. 풀이과정https://webhacking.kr/challenge/web-11/?id=admin를 맨 처음에 입력해보자.no!가 출력이 되..
프롤로그시간이 부족해 문제https://dreamhack.io/wargame/challenges/343 [wargame.kr] tmitterDescription you need login with "admin"s id! create table tmitter_user( idx int auto_increment primary key, id char(32), ps char(32) );dreamhack.io 코드는 따로 주어지지 않았다 코드처음 입장했을 때 이렇게 존재하고, 소스코드는 TMITTER is not fake twitter! :p have an account? New to Tmitter? ID PS 여기서 확인할 수 있다. 그리고 문제조건에서 나온..
프롤로그학회 때문에 바빠죽겠는데 할 건 해야지.. 문제https://dreamhack.io/wargame/challenges/931 random-testDescription 새 학기를 맞아 드림이에게 사물함이 배정되었습니다. 하지만 기억력이 안 좋은 드림이는 사물함 번호와 자물쇠 비밀번호를 모두 잊어버리고 말았어요... 드림이를 위해 사물함 번호와dreamhack.io드림이는 바보야.. 코드#!/usr/bin/python3from flask import Flask, request, render_templateimport stringimport randomapp = Flask(__name__)try: FLAG = open("./flag.txt", "r").read() # flag is ..
문제https://dreamhack.io/wargame/challenges/1186 what-is-my-ipDescription How are they aware of us even behind the wall? FYI Flag Location: /flag Flag Format: DH{...}dreamhack.io 소스코드#!/usr/bin/python3import osfrom subprocess import run, TimeoutExpiredfrom flask import Flask, request, render_templateapp = Flask(__name__)app.secret_key = os.urandom(64)@app.route('/')def flag(): user_ip = reques..
프롤로그하루 1 워게임 도전중 문제소스코드를 다운받아도, 아무것도 없길래 일단 넘어가겠다. 그래서 사이트를 접속하게 되면get source 부분이 있는데 저것을 클릭하면 소스코드"; echo "FLAG : ".$FLAG; } }else{ echo "wrong.."; } }?>IDPW get source 코드 분석맨 밑에 주석처리되어 있는 you have blocked accounts.guest / guestblueh4g / blueh4g1234ps이게 아마 아이디, 비밀번호일것이다. isset($_POST['id']) && isset($_POST['ps'])여긴 POST 요청으로 아이디, 비밀번호가 요청된 게 있는 확인하는 곳mysqli_connect("localhost", $DB_u..
프롤로그CSRF 관련된 풀이는 오랜만이라서 개념부터 다시 정리하고, 이전 CSRF-1번 문제 되돌아보면서 이 CSRF Advanced 문제를 풀어보자 CSRF교차 사이트 요청 위조(Cross Site Request Forgery)쿠키 또는 세션을 사용해 이용자를 식별하는데, 임의 이용자의 쿠키를 사용할 수 있다? 그러면 임의 이용자의 웹 서비스 기능을 사용할 수 있다.CSRF는 임의 사용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점이다. CSRF 공격에 성공하기 위해서는 공격자가 작성한 악성 스크립트를 이용자가 실행하여야함.-> 메일/게시판에 글을 작성해 이용자가 이를 조회하도록 유도 IMG 태그나 FORM 태그로 요청보내면 세션아이디값이 같이 간다중요한건CSRF는 이용자가 임의 페..
프롤로그화이트햇 하면서 공책받고나서 거기다가 열심히 적으면서 하다가 블로그 정리 안 하긴 했는데블로그 정리가 훨씬 더 좋은 거 같다. 문제 문제코드#app.pyimport osfrom flask import Flask, requestfrom flask_mysqldb import MySQLapp = Flask(__name__)app.config['MYSQL_HOST'] = os.environ.get('MYSQL_HOST', 'localhost')app.config['MYSQL_USER'] = os.environ.get('MYSQL_USER', 'user')app.config['MYSQL_PASSWORD'] = os.environ.get('MYSQL_PASSWORD', 'pass')app.config['..
0. 프롤로그https://dreamhack.io/wargame/challenges/353 Return to LibraryDescription Exploit Tech: Return to Library에서 실습하는 문제입니다.dreamhack.io 1. 사전 공부 및 작업2. 문제 3. 코드 분석 4. 스택 구조 5. 예상 공격 방법 6. 카나리 값 획득 7. system.의 plt 주소 확인8. 리턴 가젯 9. /bin/sh의 주소 찾기10. 실행 11. 에필로그시간 투자를 굉장히 많이함.