본문 바로가기

웹해킹

(116)
old-12 롸업(webhacking.kr) javascript challenge라고 되어 있어서 바로 개발자 도구에서 구성 코드를 확인했다. script 태그 안에 자바스크립트 코드가 알아볼 수 없는 형태로 엄청 길게 작성되어 있다. 뭔지 감이 안 잡혀서 몇줄 정도 복사하고 gpt한테 물어봤더니 자바스크립트 난독화를 위한 AAEncode가 사용된 코드라고 한다. 갓 gpt.. AAEncode 디코더 사이트에 들어가서 디코딩을 해봤더니 var enco=''; var enco2=126; var enco3=33; var ck=document.URL.substr(document.URL.indexOf('=')); for(i=1;i
old-11 롸업(webhacking.kr) 처음 화면이다. 그냥 Wrong이라고 떠 있다. view-source를 확인해보았다. view-source 엄청나게 간단한 문제인데, php코드 안에 있는 if문만 만족시키면 solve(11)이 실행된다. val이라는 변수가 정규표현식 pat를 만족시키면 된다. pat 정규표현식을 보면, "1~3중에 숫자 하나"+"(a~f중에 하나)*5"+"_"+자신의 ip주소+탭으로 구분된 pass문자 이다. 탭 문자를 url인코딩하면 %09가 되기 때문에 1aaaaa_211.234.192.188%09p%09a%09s%09s 이런 식으로 val값을 url에서 작성해주면 된다. 이렇게 풀렸다.
old-10 롸업(webhacking.kr) 문제 화면이다. 회색 칸의 맨 왼쪽 상단에 있는 O 표시 위에 커서를 올리면 yOu로 바뀐다. 개발자 도구에서 본 코드이다. onmouseover 때문에 커서를 올리면 yOu로 바뀌는 거였다. 눌렀을 때 onclick 부분에서 실행되는 코드 onclick="this.style.left=parseInt(this.style.left,10)+1+'px';if(this.style.left=='1600px')this.href='?go='+this.style.left" 이 부분이 중요한 것 같다. 1600px이 됐을 때 ?go=1600px로 이동을 하니까 url에 ?go=1600px를 붙여봤더니 no hack라고 뜨면서 정상적으로 되지 않았다. 그래서 직접 이동을 시키기 위해서 +1+'px' 이 부분을 +1599로..
old-07 롸업(webhacking.kr) 초기 화면이다. view-source부터 확인해 보았다.
old-06 롸업(webhacking.kr) id와 pw가 나와있다. 우선 view-source부터 눌러보았다. val_id와 val_pw를 base64로 20번 인코딩하고 str_replace로 문자열 치환을 한 값을 가지고 cookie를 세팅한다. 문제를 풀기 위해서는 solve(6)이 실행되어야 할 거 같은데 decode_id와 decode_pw의 값을 원하는 대로 맞춰야 한다. 쿠키를 설정해주면 str_replace가 되고 base64로 20번 디코딩된다. 이 값이 admin과 nimda가 되어야 하기 때문에 우선 이 문자열들을 base64로 20번 인코딩해보겠다. import base64 def encode_base64_repeatedly(input_string): for _ in range(20): input_string = base64..
old-05 롸업(webhacking.kr) Login 버튼을 누르면 move함수가 실행되면서 mem/login.php페이지로 이동한다. Join 버튼을 누르면 no 함수가 실행되면서 Access Denied 가 뜬다. 로그인 페이지이다. 로그인 버튼을 누르면 login.php로 id와 pw가 전달된다. 그냥 로그인 해봤는데 Wrong password라고 뜬다. Wrong password . . . . . . . login.php 파일이다. 개발자 도구의 source 탭에서 찾은 건데 그냥 html 파일에 있는 것과 똑같아 보인다. 로그인 url이 /mem/login.php이길래 그냥 /mem 링크로 접속해 보았다. join.php로 접속했더니 이렇게 떴다. bye라고 뜨길래 푼 줄 알았는데 아니었다. l='a';ll='b';lll='c';llll..
old-01 롸업(webhacking.kr) 들어와보면 그냥 까만 배경에 level:1과 view-source라고 써져 있다. view-source를 눌러 봤다. ---------------------
드림핵 File Vulnerability Advanced for linux 롸업 import os, subprocess from functools import wraps from flask import Flask, request app = Flask(__name__) API_KEY = os.environ.get('API_KEY', None) def key_required(view): @wraps(view) def wrapped_view(**kwargs): apikey = request.args.get('API_KEY', None) if API_KEY and apikey: if apikey == API_KEY: return view(**kwargs) return 'Access Denined !' return wrapped_view @app.route('/', methods=['GET'..