SlowTurtle_

천천히 그러나 끝까지 완주

728x90

전체 글 65

[Dreamhack] XSS Filtering Bypass Advanced

[Dreamhack] XSS Filtering Bypass Advanced 코드를 먼저 확인하였다. #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FLAG**]" def read_url(url, cookie={"name": "name", "value": "value"}): cookie.update({"domain": "127.0..

[Dreamhack] image-storage

[Dreamhack] Wargame - image-storage index Image Storage Home List Upload 파일 업로드 upload 소스만 보면 될 것 같다. upload소스를 보면 업로드되는 파일에 대해 어떠한 필터링도 존재하지 않는다는 것을 알았다. 그래서 flag.txt를 읽어주도록 cat명령어가 담긴 메모장 하나를 만들어봤다. 메모장 코드는 아래와 같다. 메모장을 업로드해보겠다. 업로드한 경로를 알려줬다. url을 통해 이동해보자. flag를 획득했다!

[Dreamhack] Command Injection-1

[Dreamhack] Wargame - Command Injection-1 index 주소를 넣고 Ping을 눌렀을 때 , 위와 같은 결과를 얻을 수 있었다. ping -c 3 " " 핑을 3번 보내는 것인데 " " 안에 우리가 입력한 주소가 들어가 그 주소에 ping을 3번 보낸느 것을 알 수 있었다. 그렇다면 ""을 우회하여 다른 동작을 해보자 flag.py가 현 위치에 있다는 것을 확인했기에 cat명령어로 flag.py를 읽어보자. flag를 획득했다!

[Dreamhack] Mango

[Dreamhack] Wargame - Mango index 로그인 정보를 url에 넣어 접속하니 guest가 출력됐다. const BAN = ['admin', 'dh', 'admi']; filter = function(data){ const dump = JSON.stringify(data).toLowerCase(); var flag = false; BAN.forEach(function(word){ if(dump.indexOf(word)!=-1) flag = true; }); return flag; } 코드를 확인하니 admin,dh,admi가 필터링되어 있다는 것을 알 수 있었다. app.get('/login', function(req, res) { if(filter(req.query)){ res.se..

[Dreamhack] XSS-2

[Dreamhack] Wargame - XSS-2 /vuln xss-2에서는 alert이 작동하지 않는 것을 확인했다. 그래서 코드를 확인해봤다. /vuln부분만 달라진 것을 확인했다. @app.route("/vuln") def vuln(): return render_template("vuln.html") render_template("vuln.html")로 막혀있었다. 그래서 우회하는 방법을 알아봤다. img태그는 성공적으로 되는 것을 확인할 수 있었고 script태그를 사용하지 않아도 onerror속성을 활용해서 script를 작성할 수 있는 코드를 알 수 있었다. 이 코드를 /flag에 작성하고 memo로 가보니 flag를 획득할 수 있었다.

728x90