본문 바로가기

전체 글

(133)
[DreamHack] web-ssrf https://dreamhack.io/wargame/challenges/75/ web-ssrf flask로 작성된 image viewer 서비스 입니다. SSRF 취약점을 이용해 플래그를 획득하세요. 플래그는 /app/flag.txt에 있습니다. Reference Server-side Basic dreamhack.io 난이도: Level 2 #!/usr/bin/python3 from flask import ( Flask, request, render_template ) import http.server import threading import requests import os, random, base64 from urllib.parse import urlparse app = Flask(__name__)..
[DreamHack] login-1 https://dreamhack.io/wargame/challenges/47/ login-1 python으로 작성된 로그인 기능을 가진 서비스입니다. "admin" 권한을 가진 사용자로 로그인하여 플래그를 획득하세요. Reference Server-side Basic dreamhack.io 난이도: Level 2 userLevel = { 0 : 'guest', 1 : 'admin' } @app.route('/user/') def users(useridx): conn = get_db() cur = conn.cursor() user = cur.execute('SELECT * FROM user WHERE idx = ?;', [str(useridx)]).fetchone() if user: return rende..
[DreamHack] XSS Filtering Bypass https://dreamhack.io/wargame/challenges/433/ XSS Filtering Bypass Exercise: XSS Filtering Bypass에서 실습하는 문제입니다. dreamhack.io 난이도: Level 1 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) def xss_filter(text): _filter = ["script", "on", "javascript"] for f in _filter: if f in text.low..
[DreamHack] baby-sqlite https://dreamhack.io/wargame/challenges/1/ baby-sqlite 로그인 서비스입니다. SQL INJECTION 취약점을 통해 플래그를 획득하세요! > 해당 문제는 숙련된 웹해커를 위한 문제입니다. dreamhack.io 난이도: Level 1 def login(): if request.method == 'GET': return render_template('login.html') uid = request.form.get('uid', '').lower() upw = request.form.get('upw', '').lower() level = request.form.get('level', '9').lower() sqli_filter = ['[', ']', ',', 'adm..
[DreamHack] Command Injection Advanced https://dreamhack.io/wargame/challenges/413/ Command Injection Advanced Description Exercise: Command Injection Advanced에서 실습하는 문제입니다. dreamhack.io 난이도: Level 1 Online Curl Request URL 위 PHP 코드에서 escapeshellcmd() 함수를 통해, 문자를 필터링하고 있습니다. 이후, shell_exec() 함수를 통해 curl 명령에 유저로부터 받은 인자를 넘겨 실행하고 있습니다. cache 폴더에 md5(url) 해시 함수를 통해 파일을 만든 후, 내용을 해당 파일에 써주고 있습니다. escapeshellcmd() 함수는 '-' 문자를 필터링하지 않기 때문에..
[DreamHack] out_of_bound https://dreamhack.io/wargame/challenges/11/ out_of_bound Description 이 문제는 서버에서 작동하고 있는 서비스(outofbound)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 셸을 획득하세요. "flag" 파일을 읽어 워게임 사이트 dreamhack.io 난이도: Level 1 #include #include #include char name[16]; char *command[10] = { "cat", "ls", "id", "ps", "file ./oob" }; void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, N..
[DreamHack] XSS - 2 https://dreamhack.io/wargame/challenges/268/ xss-2 여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다. XSS 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 플래그 형식은 DH{...} 입니다. Reference ClientSide: dreamhack.io 난이도: Level 1 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("/flag", me..
[Webhacking.kr] old-45 https://webhacking.kr/challenge/web-22/ Challenge 45 webhacking.kr 소스 코드 45번 문제도 50번 문제와 동일하게 mb_convert_encoding() 함수를 사용하고 있다. mb_convert_encoding() 취약점을 활용하여 쿼리문을 조작하면 될 것 같다. 단, 50번 문제와 다른 점은 admin 이라는 글자가 포함되면 안된다는 것이다. admin 키워드를 우회하기 위해서는 reverse("nimda"), 0x61646D696E 등 여러 방법들이 존재한다. 이 문제에서는 0x61646D696E 를 활용하면 될 것 같다. id : %aa%27 or id like 0x61646D696E# pw : guest select id from chall4..