목록분류 전체보기 (152)
김승현

문제 CSP Bypass 문제의 업그레이드 버전이다. 풀이 접속하면 이렇게 vuln, memo, flag 페이지를 볼 수 있다. vuln 부터 가보자. 이렇게 생겼다. memo로 가보자. 이렇게 생겼다. flag로 가보자. 각 엔드포인트들은 지금까지 보던 것들과 완전 똑같이 생겼다. 이번엔 소스코드를 확인해 보자. memo나 flag 같은 페이지는 이전 문제들과 큰 차이점이 없기 때문에 차이점이 있는 내용들만 분석하겠다. nonce 일단 코드 초반부에 unsigned 랜덤값을 16진수로 변환해서 nonce 변수에 저장한다. vuln vuln엔드포인트에서 이전엔 그냥 param을 return하는 방식이었는데 이번엔 html을 render_template를 이용해서 보여주기 때문에 vuln 페이지에서 테스트..

문제 csp를 우회하는 문제이다. 풀이 접속하면 이런 화면을 볼 수 있다. vuln page부터 가보자. xss 문제처럼 딱히 다른 점은 없어보인다. memo로 가보자. 별 다른 점은 없다. flag로 가보자. 여기도 지금까지 풀었던 문제와 별 다른 점은 없다. 소스코드를 확인해보자. #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) nonce = os.urandom(16).hex() try: FLAG = open("./flag.txt", ..

문제 이전에 풀었던 문제에서 패치된 문제로 아마도 필터링이 더 강화된 문제일 것 같다. 풀이 접속하면 볼 수 있는 화면이다 vuln page로 가보자. vuln page로 가면 이렇게 생겼고 위의 파라미터를 바탕으로 사진이 출력되어 있는 걸 볼 수 있다. memo로 가보자. 이렇게 memo 엔드포인트로 갈 때마다 hello가 출력된다. 마지막으로 flag로 가보자. 이렇게 localhost에 대한 파라미터를 입력받고 제출할 수 있게 되어 있다. 소스코드를 확인해보자. #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver import urllib import os app = Flas..

문제 xss 필터 우회 관련 문제이다. 풀이 접속하면 예전 xss 문제를 풀 때와 같은 익숙한 페이지가 등장한다. vuln page, memo, flag 엔드포인트가 존재한다. vuln page로 이동해보면 이렇게 주소에 img 스크립트와 그로 인해 출력된 이미지가 보인다. memo로 이동해보면 memo로 올 때마다 hello가 출력되는 걸 볼 수 있다. flag로 이동해보면 이렇게 localhost의 파라미터를 직접 입력해서 제출할 수 있도록 하고 있다. 이제는 소스코드로 이동해보자. #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver import urllib import os..

문제 파일 취약점을 이용해서 서버의 권한을 획득하는 문제이다. 풀이 접속하면 이렇게 파일을 선택할 수 있게 되어있다. 아무 파일이나 업로드 해보자. bof4.txt라는 파일을 골랐고 submit해보자. 이렇게 저장된 주소가 출력되고 해당 주소로 가보면 파일 내용이 출력이 된다. 다운한 파일들을 살펴보자. Online File Box Choose a file... No file uploaded index는 그냥 페이지를 구성하는 내용들이다.

문제 파일 취약점을 이용해서 flag를 얻는 문제의 advanced 버전이다. 함께 실습 문제라서 코드 분석은 안 하겠습니다! 풀이 접속하면 별 다른 거 없이 API index라고 출력되어 있다. 소스코드를 확인해보자. /file 엔드포인트를 확인해보면 path 파라미터를 통해 ./files/ 경로에서 파일을 읽는 걸 볼 수 있는데 이 때 필터링을 거치지 않고 하는 걸 볼 수 있다. 이 부분을 이용에서 path_traversal 취약점이 발생해 파일을 다운할 수 있을 것이다. 아마 현재 디렉토리는 var/www/에 있을 것 같으니 ../../etc/passwd로 가면 이용자들의 정보를 볼 수 있을 것 같다. 딱히 지금 할 건 없어보이니까 넘어가자. 소스코드에서 여길 보면 API_KEY를 환경변수에서 가져..

문제 command injection advanced 함께하기 실습문제이다. 풀이 접속하면 이렇게 화면이 나온다. -o 옵션이 정상작동되는지 확인해보기 위해 이렇게 입력해봤고 정상적으로 파일이 작성됐다. 강의에 알려주는대로 curl 명령어를 사용해봤다. 이렇게 됐고 cache/webshell.php로 들어가보자. 그럼 이렇게 셸이 뜬다. ls -al /을 입력하고 execute를 누르면 이렇게 목록이 뜨고 중간에 flag는 execute 권한만 가진 게 보인다. 실행해보자. /flag로 실행하면 정상적으로 flag를 얻을 수 있다.

문제 php로 redis를 관리하는 서비스에서 취약점을 찾아서 flag를 획득하라는 문제인 것 같다. 풀이 접속하면 이렇게 되어 있다. 일단 save를 체크하고 return 1;을 submit 해보자 이렇게 특정 주소로 저장되었다고 뜨고 command History에 내용이 입력된다. 이번엔 return 2;를 save없이 submit 해보자. 이렇게 return 2;가 입력되고 저장된 경로가 없는 걸 보니 save를 눌러야 서버 내에 저장 커맨드가 저장되고 입력 없이 하면 한 번 실행되고 끝인 것 같다. command history 오른쪽 끝에 있는 reset 버튼을 누르면 내용들이 초기화된다. 이번엔 오른쪽 젤 위의 config를 눌러보자. 이렇게 config 선택창과 , KEY, VALUE 입력창이..

문제 couchDB 함께하기 실습 문제이다. 풀이 사이트에 접속하면 uid, upw 입력칸이 있고 login하는 칸이 있다. app.post('/auth', function(req, res) { users.get(req.body.uid, function(err, result) { if (err) { console.log(err); res.send('error'); return; } if (result.upw === req.body.upw) { res.send(`FLAG: ${process.env.FLAG}`); } else { res.send('fail'); } }); }); 여기가 uid, upw 등을 입력 받은 코드인데 강의에서도 얘기했듯이 입력받는 uid의 입력에 대한 검사가 없다. 그렇다면 uid..