본문 바로가기

드림핵

(68)
[드림핵 워게임] out of money 1. 사이트 및 코드 확인 문제 사이트에 접속하면 처음에 뜨는 페이지이다. 아무 이름이나 입력해서 Sign in 한다. Sign in 하면 나의 자산 내역을 확인할 수 있다. 자산의 종류에는 DHH, DHC, DHD가 있는 것을 알 수 있다. 산타 사설 거래소로 들어가본다. DHH를 빌리고, 코인을 교환하고, FLAG를 구매할 수 있는 페이지이다. @app.route("/santa/flag", methods=['GET']) def santa_flag(): if session['DHH'] >= 1000.0: if session['debt_DHH'] == 0.0: return render_template("flag.html") else: return render_template("santa.html", se..
[드림핵 워게임] command-injection-chatgpt 1. 사이트 및 코드 확인 문제 사이트에 접속하면 처음으로 보이는 페이지이다. Ping을 클릭해보았다. Host 를 입력하는 폼이 나온다. @APP.route('/ping', methods=['GET', 'POST']) def ping(): if request.method == 'POST': host = request.form.get('host') cmd = f'ping -c 3 {host}' try: output = subprocess.check_output(['/bin/sh', '-c', cmd], timeout=5) return render_template('ping_result.html', data=output.decode('utf-8')) except subprocess.TimeoutExpire..
[드림핵 워게임] simple_sqli_chatgpt 1. 문제 사이트 및 코드 확인 문제 사이트에 접속하면 처음으로 뜨는 페이지이다. Login을 클릭해보았다. 로그인 폼을 볼 수 있다. id, password를 입력받지 않고 userlevel만 입력받고 있다. 문제 설명대로 어딘가 이상한 로그인 서비스이다. @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'GET': return render_template('login.html') else: userlevel = request.form.get('userlevel') res = query_db(f"select * from users where userlevel='{userlevel}'") if res: user..
[드림핵 워게임] 🌱 simple-web-request 1. step1 풀기 문제 사이트에 처음 접속하면 보이는 페이지이다. STEP1을 클릭한다. param과 param2 파라미터를 입력하는 폼이 있다. @app.route("/step1", methods=["GET", "POST"]) def step1(): #### 풀이와 관계없는 치팅 방지 코드 global step1_num step1_num = int.from_bytes(os.urandom(16), sys.byteorder) #### if request.method == "GET": prm1 = request.args.get("param", "") prm2 = request.args.get("param2", "") step1_text = "param : " + prm1 + "\nparam2 : " + ..
[드림핵 워게임] ex-reg-ex 1. 사이트 및 코드 확인 문제 사이트에 접속하면 처음으로 보이는 페이지다. 입력란이 있고, 그 아래에 Input 값과 Flag를 출력하는 박스가 있다. 입력란에 임의로 'a'를 입력했더니 위와 같은 결과가 나왔다. def index(): input_val = "" if request.method == "POST": input_val = request.form.get("input_val", "") m = re.match(r'dr\w{5,7}e\d+am@[a-z]{3,7}\.\w+', input_val) if m: return render_template("index.html", pre_txt=input_val, flag=FLAG) return render_template("index.html", pre_..
[드림핵 워게임] Flying Chars 1. 사이트 접속 문제 사이트에 접속해보았다. 작은 문자들이 날아다니는 것을 볼 수 있다. 문제 설명대로 첨부파일이 주어져있지 않기 때문에 개발자 도구를 열어서 소스를 확인해보기로 했다. 2. 개발자 도구로 소스보기 개발자 도구의 Elements 탭에서 html 소스를 보았다. 먼저 태그를 탐색했다. 태그 안에는 19개의 태그들이 들어있다. 날아다니는 문자들의 정체가 바로 이 이미지들인 것 같다. const img_files = ["/static/images/10.png", "/static/images/17.png", "/static/images/13.png", "/static/images/7.png","/static/images/16.png", "/static/images/8.png", "/static..
[드림핵 워게임] phpreg - step1 1. 코드 및 사이트 확인 문제 사이트에 접속하면 처음으로 보이는 페이지다. 닉네임과 패스워드를 입력하는 폼을 확인할 수 있다. if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13") { echo 'Step 2 : Almost done...'; $cmd = $_POST["cmd"] ? $_POST["cmd"] : ""; if ($cmd === "") { echo ' '; } // cmd filtering else if (preg_match("/flag/i", $cmd)) { echo "Error!"; } else{ echo "--Output--\n"; system($cmd); echo ""; } } else{ echo "Wrong nickname..
[드림핵 워게임] cg-simple_sqli 1. 사이트 및 코드 확인 문제 사이트에 접속하면 처음에 보이는 페이지다. Login을 클릭해보았다. 로그인 입력창을 확인할 수 있다. DATABASE = "database.db" if os.path.exists(DATABASE) == False: db = sqlite3.connect(DATABASE) db.execute('create table users(userid char(100), userpassword char(100));') db.execute(f'insert into users(userid, userpassword) values ("guest", "guest"), ("admin", "{binascii.hexlify(os.urandom(16)).decode("utf8")}");') db.com..