본문 바로가기

분류 전체보기

(113)
[드림핵 워게임] Mango (조건 추가) 위의 문제를 앞서 풀어보았는데, 이전에 풀었던 링크는 아래와 같다. https://studyforall.tistory.com/14 [드림핵 워게임] Mango 위의 문제를 다음과 같은 과정으로 풀어보았다. 1. 코드 분석 첫 페이지에 접속해보면 위와 같은 페이지가 출력된다. 이 결과는 아래의 코드가 실행되어 나온 결과이다. app.get('/', function(req, res) { studyforall.tistory.com 같은 문제를 - f스트링 쓰지 않기 - flag가 32자리라는 사실을 모른다고 가정하기 라는 두 조건을 추가하여 다시 풀어보았다. import requests, string HOST = "http://host3.dreamhack.games:*****/" GET_FLAG = strin..
[드림핵 워게임] Carve Party 위의 문제를 다음과 같은 과정으로 풀어보았다. 1. 기능 확인하기 문제에서 다운로드한 파일을 열어보면 위와 같은 화면이 뜨는데, 호박을 한 번 클릭하면 아래의 문구가 10000 more clicks to go! 에서 9999 more clicks to go!로 바뀌는 것을 확인할 수 있다. 호박을 9999번 더 클릭하면 플래그를 얻을 수 있지만 코드상의 취약점을 찾아내어 더 빠르게 플래그를 얻을 수 있는 방법을 택하였다. 2. 코드에서 취약점 찾아내기 개발자 도구(F12)를 열어 Elements 탭에서 html 소스를 확인해보면, 호박이 id="jack-target"으로 지정되어있는 것을 볼 수 있다. Sources 탭에서 확인해보면 jact-target 객체를 클릭했을 때 클릭한 횟수를 세어 count..
[드림핵 워게임] pathtraversal 위의 문제를 다음과 같은 과정으로 풀어보았다. 1. 기능 확인하기 첫 페이지는 위와 같다. Get User Info를 클릭해 접속해본다. userid를 입력하는 창이 뜬다. guest 계정에 대한 정보를 응답받았다. 2. 코드 분석하기 users = { '0': { 'userid': 'guest', 'level': 1, 'password': 'guest' }, '1': { 'userid': 'admin', 'level': 9999, 'password': 'admin' } } 코드를 살펴보면 계정정보를 확인할 수 있다. 1단계에서 응답받은 내용이 여기에 있는 계정 정보인 것을 알 수 있다. @app.route('/get_info', methods=['GET', 'POST']) def get_info(): ..
[드림핵 워게임] command injection-1 위의 문제를 다음과 같은 과정으로 풀어보았다. 1. 코드 및 페이지 파악하기 @APP.route('/') def index(): return render_template('index.html') @APP.route('/ping', methods=['GET', 'POST']) def ping(): if request.method == 'POST': host = request.form.get('host') cmd = f'ping -c 3 "{host}"' try: output = subprocess.check_output(['/bin/sh', '-c', cmd], timeout=5) return render_template('ping_result.html', data=output.decode('utf-8')..
[드림핵 워게임] Mango 위의 문제를 다음과 같은 과정으로 풀어보았다. 1. 코드 분석 첫 페이지에 접속해보면 위와 같은 페이지가 출력된다. 이 결과는 아래의 코드가 실행되어 나온 결과이다. app.get('/', function(req, res) { res.send('/login?uid=guest&upw=guest'); }); 문제는 푸는 데에 그리 중요한 부분은 아닌 듯하다. 또 다른 엔드포인트로는 아래의 /login 페이지가 있다. app.get('/login', function(req, res) { if(filter(req.query)){ res.send('filter'); return; } const {uid, upw} = req.query; db.collection('user').findOne({ 'uid': uid,..
[bee-box 모의해킹] A8 크로스 사이트 요청 변조(CSRF) 도서 ⌜비박스 환경을 활용한 웹 모의해킹 완벽 실습⌟ 를 활용한 실습을 하였다. 오늘의 실습 주제는 크로스 사이트 요청 변조(CSRF)이며, 도서의 chapter 25~28에 해당한다. 그러나 burp suite 사용에 문제가 있어 chapter26과 28만 실습하였다. Chapter 26. 비밀번호 변경 - Change Password csrf_1.php 페이지에 들어가서 Change를 클릭하면 url이 다음과 같이 요청된다. 책에 써있는 대로 htmli_stored.php 페이지로 이동해서 img 태그를 이용한 공격 코드를 작성하여 submit 한다. 비밀번호를 새롭게 evil로 변경하였으므로 로그인 페이지에서 로그인할 때 기존의 비밀번호인 'bug'를 입력하면 로그인에 실패하고, 새 비밀번호인 'e..
[WPI CTF] Muffin Hater(미해결) 위의 문제를 다음과 같이 풀어보려고 시도했다. 1. 주어진 CVE 링크로 들어가서 설명란을 읽어보았다. Muffinhater88의 사이트가 FastAPI 0.65.1 버전을 사용 중인데, 0.65.2보다 낮은 버전은 CSRF 공격에 취약하다는 설명이 있다. 따라서 CSRF 공격을 시도해볼 수 있을 것이다. 2. 힌트를 확인해보았다. 3. 주어진 링크(Main Server와 Search Server) 로 들어가봤다. Main Server 주소로 들어가보면 로그인할 수 있는 창이 나온다. Search Server 로 들어가보면 쿼리를 검색할 수 있는 창이 나온다. 검색창에 를 입력한 것이다. 서식을 제출하면 위와 같이 alert창이 뜨는 것을 볼 수 있다. 이를 통해 예상했던 대로 xss 공격이 가능한 것을..
[DownUnderCTF] Helicoptering(미해결) beginner 레벨의 문제를 풀어보려고 시도했다. 문제를 클릭했을 때 뜨는 url 링크로 접속하니 아래와 같은 화면이 나왔다. 문제를 해석해보면, flag를 얻을 수 있는 두 파트 part one, part two가 있는데 둘 모두 .htaccess 파일로 보호되고 있다. .htaccess 파일에 대해 알아보니 디렉토리 레벨에서 아파치 환경설정을 할 수 있는 파일 형식이라고 한다. 현재 상황에서는 .htaccess로 막힌 제약을 우회하여 두 파트에 접속하면 flag를 얻을 수 있는 것으로 보인다. part one과 part two로 접속하면 아래와 같이 forbidden 페이지가 나오면 접속이 거부된다. 개발자 도구에서 source를 보면 '숨겨진 것은 없으며, 위에 있는 정보만으로 문제를 풀 수 있다..