문제 정보 드림이는 빼빼로데이를 맞아 티오리제과에서 빼빼로 구매를 위한 쿠폰을 받았습니다. 하지만 우리의 목적은 FLAG! 그런데 이런, FLAG는 너무 비싸 살 수가 없네요… 쿠폰을 여러 번 발급받고 싶었는데 이것도 불가능해요. 내부자 말에 의하면 사용된 쿠폰을 검사하는 로직이 취약하다는데, 드림이를 도와 FLAG를 구매하세요! 풀이 힌트 1. Coupon Expired Time 문제 풀이 더보기 더보기 문제를 들어가니, 세션을 발급 받는 페이지가 첫 페이지로 나왔다. 세션을 발급 받을 때 전달된 값을 확인해보니, JSON 형식으로 위와 같은 값을 전달하고 있었다. 값 중 특이하는 것을 보니, coupon_claimed 값이 있는데 이는 쿠폰 사용 여부를 나타는 값으로 보인다. 세션을 발급 받은 후의 ..
문제 정보 주어진 코드와 로그를 분석해 주어진 질문에 해당하는 답을 찾아보세요. 풀이 힌트 1. 추론 능력 문제 풀이 더보기 더보기 문제 페이지를 보니 5개의 질문이 있는 것으로 보인다. 첫번째 질문은 로그에서 admin의 pw를 탈취하려는 시도를 찾아야한다. 많은 로그들이 보인다. 대부분의 로그는 숨겨진 페이지를 찾으려는 시도가 일어난 것으로 보인다. 나는 404 상태코드가 너무 많아서 일단 200 상태코드만 살펴봤다. 조금 내려보면서 살펴보니, SQLi이 일어난 부분을 찾을 수 있었다. 여기서 빨간색 상자에 들어간 부분을 주의 깊게 봐야한다. if(1=1, (select 1 union select 2), 0)이라는 페이로드은 1=1이라서 True가 나오고 (select 1 union select 2)..
문제 정보 취약점을 찾아 플래그를 획득해보세요. 플래그는 /flag를 실행하면 얻을 수 있습니다. 해당 문제는 숙련된 웹해커를 위한 문제입니다. 풀이 힌트 1. Flask Debugger Exploit 2. Python Programming 문제 풀이 더보기 더보기 문제 페이지를 들어가니, 아무것도 없고 "Hello !"만 덜렁덜렁있었다. 아무런 정보가 없어서 혹시나 하는 맘에 robots.txt를 요청하니, flask가 debugger 모드로 실행되고 있었다. 내가 flask를 공부했을 때 flask의 debugger 모드에서 취약점이 있으니, 배포할 때 꼭 debugger 모드로 되어있는지 체크하라고 했던 것으로 기억난다. 구글에 "Flask Debugger PIN exploit"이라고 검색하니 무수..
문제 정보 Read the flag file XD 풀이 힌트 1. 코드 분석 & OPTIONS 메소드 2. 드림핵의 Request bin 기능 이용 (requestbin.net으로 해본 결과 안됨.) 문제 풀이 더보기 더보기 문제 페이지를 보고 난 cmd로 명령어를 보내면 실행되는 거로 추측된다. 하지만 결과값은 출력되지 않고 내가 입력한 값이 출력됐다. 그래서 나는 "서버 단에서 명령어가 실행되고 결과 값을 출력을 안하고 있구나"라는 생각을 하였다. 이로 인해 "그럼 내가 입력한 명령은 실행되니, nc나 curl를 이용하여 내가 만든 서버에 값을 보내면 되지 않을까?"라는 방법을 생각하였다. 내가 생각하였던 서버 단에서 명령어가 실행되는 아닌 것으로 보였다. 도저히 방법을 찾을 수 없어서 드림핵에서 제..
문제 정보 flask로 작성된 image viewer 서비스 입니다. SSRF 취약점을 이용해 플래그를 획득하세요. 플래그는 /app/flag.txt에 있습니다. 풀이 힌트 1. 소스코드 분석 2. IP 난독화 IP 난독화 참고 사이트 : http://www.reversenote.info/ip-opfuscate/ 문제 풀이 더보기 더보기 문제 페이지를 확인하니, Image Viewer 기능만 있었다. 들어가서 확인하니, 서버 내 리소스의 url를 넘겨주면 이미지 파일로 출력해주는 기능인 듯 싶었다. 한번 문제 페이지의 url를 넣어서 이미지 파일을 요청해보니, Not Found X라는 문구를 가진 이미지가 출력됐다. 이번엔 flag.txt 파일을 호출해봤는데, 깨진 이미지가 출력됐다. 깨진 이미지의 값이..
문제 정보 Session Login이 구현된 서비스입니다. Python(pickle)의 Deserialize 취약점을 이용해 플래그를 획득하세요. 플래그는 flag.txt 또는 FLAG 변수에 있습니다. 풀이 힌트 1. pickle exploit 참고 사이트 : https://rootable.tistory.com/entry/python-deserialize-vulnerability-in-pickle-module 문제 풀이 더보기 더보기 문제 페이지에 들어가니, Create Session과 Check Session 기능이 있었다. 공격 백터를 확인하기 위해 하나씩 살펴보겠다. Create Session 메뉴는 create_session 페이지로 이동되었다. 해당 페이지는 name, userid, passw..
문제 정보 문제에서 요구하는 조건에 맞게 CSP를 작성하면 플래그를 획득할 수 있습니다. 풀이 힌트 1. CSP 참고 사이트 : https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP 문제 풀이 더보기 문제 페이지를 들어가니 Test CSP와 Verify CSP 메뉴가 있었다. 어떤 기능인지 확인하지 위해 한번씩 들어가서 확인을 해봤다. Test CSP 메뉴는 test 페이지로 이동되었다. 해당 페이지는 Input에 CSP를 넣어서 서버로 넘기면 검사하여 틀렸는지 맞았는지를 알려주는 페이지로 보인다. Verify CSP 메뉴는 verify 페이지로 이동되었다. 해당 페이지는 Test CSP에서 얻은 CSP를 넣어서 맞으면 Flag를 출력해주는 사이트로 보였다. 일..
문제 정보 python으로 작성된 로그인 기능을 가진 서비스입니다. “admin” 권한을 가진 사용자로 로그인하여 플래그를 획득하세요. 풀이 힌트 1. Bruteforce 문제 풀이 더보기 더보기 이번 문제도 로그인 기능만 있는 것으로 보인다. 하지만 내 예상과는 다르게 회원가입 기능과 패스워드 찾기 기능이 있었다. 공격 백터를 파악하기 위해 회원가입 기능과 패스워드 찾기 기능을 살펴봤다. 특이한 점은 패스워드 찾기에서 backupCode라는 입력값이 무슨 역활을 하는지 모르겠다. 어떤 기능으로 이루어졌는지 확인하기 위해 회원가입 후 로그인과 패스워드 찾기를 한번씩 해보겠다. test 계정을 생성하니, BackupCode를 얻을 수 있었다. test 계정으로 로그인하니, 오른쪽 상단에 test 계정의 정..
문제 정보 로그인 서비스입니다. SQL INJECTION 취약점을 통해 플래그를 획득하세요. 플래그는 flag.txt, FLAG 변수에 있습니다. 풀이 힌트 1. SQL Injection 기본 원리 문제 풀이 더보기 문제 페이지를 들어가니, Login 기능만 있었다. 공격 백터를 찾기위해 Login 페이지에 들어가니, ID와 PW를 입력할 수 있는 페이지가 나왔다. 문제의 이름이 SQLi인 것을 보니, 아마 공격 백터는 ID와 PW를 입력하는 곳으로 보인다. 일단 guest / guest로 로그인이 되는 지 확인한 결과 guest로 로그인 성공하였다. 어떠한 DBMS를 사용하는지 몰라서 일단 MySQL를 타겟으로 테스트하였다. 하지만 테스트 결과는 wrong이 뜨는 것을 확인할 수 있었다. 혹시 웹서버의..
Comment