Web Hacking/Wargame (112) 썸네일형 리스트형 Webhacking.kr : old-56 Write-Up guest의 글에 접근 시, hello~라는 메시지를 볼 수 있으나, admin의 글에는 접근 권한이 없어 거부된다. 아래 그림 2의 search 창을 보도록 한다. 해당 search 파라미터의 인자 값으로 admin 혹은 guest가 작성한 게시글에 있는 인자 값( 한자리 혹은 여러 자리 )을 입력하면 참 거짓 반응을 확인할 수 있다. search 파라미터의 인자 값으로 hello~를 전달해 보았고, 결과는 아래 그림 3과 같았다. admin의 게시글에는 flag 값이 숨겨져 있을 확률이 높았고, search 파리미터의 인자 값으로 flag를 전달해보았고, 아래 그림 4와 같은 참 반응을 얻을 수 있었다. flag 형식이 flag{ 플래그 값} 일 테니, 아래와 같이 버프슈트 인트루더를.. Webhacking.kr : old-33 Write-Up Challenge 33-1 Challenge 33-1 view-source 문제의 요구에 맞춰, get 파라미터의 인자 값으로 hehe를 전달해 준다. https://webhacking.kr/challenge/bonus-6/?get=hehe Challenge 33-2 Challenge 33-2 view-source 이번에는 아래와 같이 POST 형식으로 값을 전달해준다. Challenge 33-3 Challenge 33-3 view-source https://webhacking.kr/challenge/bonus-6/33.php?myip=나의 IP 찾기 Challenge 33-4 Challenge 33-4 view-source 해당 Challenge를 해결하기 위해, 아래와 같은 파이썬 코.. Webhacking.kr : old-42 Write-Up test.txt 파일 다운로드 시, 아래와 같은 request와 response를 확인 가능하다. 파일 다운로드 요청 시, base64 encoding됨을 확인하였다. flag.docx 파일을 다운로드 요청 시, Access Denied 되므로, flag.docx 파일을 base64 endoing하여 요청한다. Word 파일이 다운로드 되어지고, 해당 파일 열람 시 flag 값을 확인할 수 있다. Webhacking.kr : old-36 Write-Up While editing index.php file using vi editor in the current directory, a power outage caused the source code to disappear. Please help me recover. vi editor를 통해 index.php 파일을 편집하다가, 정전이 나서 소스코드가 날아갔다고 한다. swp 확장자 파일이 남아있는지 확인하면 될 것 같다. https://webhacking.kr/challenge/bonus-8/.index.php.swp 위와 같이 .index.php.swp 파일을 요청하면, swp 파일이 다운로드 되고, 해당 파일 확인 시, flag를 획득할 수 있었다. 참고 vi editor는 비정상적으로 .. Webhacking.kr : old-23 Write-Up 해당 문제의 미션은 Your mission is to inject 인 것을 알 수 있다. 먼저 HTML Entity Encoding 처리로 인한 스크립트 실행 가능 여부를 파악한다. 1 태그 삽입이 되는 것을 확인하였다. 즉, 태그 자체가 encoding 처리되어 필터링되지는 않는다. ab 위처럼 영문자를 연속으로 입력 시, no hack과 같이 필터링되는 것을 볼 수 있다. 즉, 이를 우회해야 한다. a%00l%00e%00r%00t(1); 위 injection code를 입력 창에 넣어보았으나, URL encoding 되어 GET 방식으로 전달된 덕에 아래와 같은 결과를 얻게 된다. 그래서 아래와 같이 URL 창의 code 파라미터에 값을 직접 전달해준다. 참고 code= 잠깐 헷갈렸던.. Webhacking.kr : old-31 Write-Up 문제 페이지에 접속하자 아래와 같은 코드와 에러 메시지가 출력된다. $port = rand(10000,10100); $socket = fsockopen($_GET['server'],$port,$errno,$errstr,3) or die("error : {$errstr}"); Warning: fsockopen(): unable to connect to IP 주소:10080 (Connection refused) in /var/www/html/challenge/web-16/index.php on line 23 error : Connection refused $port = rand( 10000, 10100 ) : 먼저 10000 ~ 10100 사이의 임의 포트 번호를 생성한다. $socket =.. Level 2 : web-ssrf @app.route("/img_viewer", methods=["GET", "POST"]) def img_viewer(): if request.method == "GET": return render_template("img_viewer.html") elif request.method == "POST": url = request.form.get("url", "") urlp = urlparse(url) if url[0] == "/": url = "http://localhost:8000" + url elif ("localhost" in urlp.netloc) or ("127.0.0.1" in urlp.netloc): data = open("error.png", "rb").read() img = base64.b.. Level 1 : File Vulnerability Advanced for linux @app.route('/file', methods=['GET']) def file(): path = request.args.get('path', None) if path: data = open('./files/' + path).read() return data return 'Error !' /file 경로에서는 path 파라미터에 따라, 파일을 읽어온다. 먼저, /etc/passwd 파일을 읽어올 수 있는지 확인해 보았다. 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_KE.. 이전 1 ··· 6 7 8 9 10 11 12 ··· 14 다음