SlowTurtle_

천천히 그러나 끝까지 완주

728x90

dreamhack 38

[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를 획득할 수 있었다.

[Dreamhack] XSS-1

[Dreamhack] Wargame - XSS-1 /flag 코드를 봤을 때 flag /vuln(xss)page /vuln페이지 param에 스크립트문이 실행되는데 vlun함수에는 필터링이 없어서 xss가 가능한 것을 확인할 수 있다. /memo 이곳은 memo에 값을 html로 보여준다. /flag def check_xss(param, cookie={"name": "name", "value": "value"}): url = f"http://127.0.0.1:8000/vuln?param={urllib.parse.quote(param)}" return read_url(url, cookie) @app.route("/") def index(): return render_template("index.html")..

[Dreamhack] Same Origin Policy (SOP)

[Dreamhack] Wargame - Same Origin Policy (SOP) 브라우저는 인증 정보로 사용될 수 있는 쿠키를 브라우저 내부에 보관한다. 그리고 이용자가 웹 서비스에 접속할 때 브라우저는 해당 웹 서비스에서 사용하는 인증 정보인 쿠키를 HTTP 요청에 포함시켜 전달한다. 이 특징은 사이트에 직접 접속하는 것에만 한정되지 않는다. 이 특징으로 악의적인 페이지가 클라이언트의 권한을 이용해 대상 HTTP 요청을 보내고 HTTP응답 정보를 획득하는 코드를 실행할 수 있다. 브라우저의 보안 메커니즘인 동일 출처 정책(SOP)는 클라이언트 입장에서 가져온 데이터를 악의적인 페이지에서 읽을 수 없도록 한다. - 오리진 구분 방법 : 프로토콜, 포트, 호스트로 구성되며 이 세 구성요소가 모두 일치해..

[Dreamhack] Cookie

[Dreamhack] Wargame - Cookie admin 계정으로 로그인에 성공하여 플래그 얻기! 유저에 guest가 있는 것을 알 수 있다. users = { 'guest': 'guest', 'admin': FLAG } guest로 로그인 했을 때이다. index를 구성하는 코드 @app.route('/') def index(): username = request.cookies.get('username', None) if username: return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else "you are not admin"}') return render_..

728x90