본문 바로가기

드림핵

(68)
[드림핵 워게임] amocafe 1. 문제 사이트와 코드 살펴보기 문제의 사이트에 접속해보면 처음에 위와 같은 화면이 뜬다. 아모의 최애 메뉴(1_c_3_c_0__ff_3e)가 암호화된 문자열로 주어지고, menu number를 입력할 수 있는 입력창을 확인할 수 있다. "My favorite menu is {{ menu }} 🥤" order 해당 부분에 대한 코드를 templates/index.html 파일에서 확인해보면 암호화된 문자열은 {menu} 라는 파라미터를 통해 전달받고 있는 것을 볼 수 있다. 입력창에 아무 숫자나 입력해보았다. try again... 이라는 결과가 뜬다. # POST if request.method == "POST": input_str = request.form.get("menu_input", "") i..
[드림핵 워게임] sql injection bypass WAF - 문제 - 풀이 문제 사이트에 접속하면 뜨는 첫 화면이다. SQL 문이 있고, 그 아래 결과가 뜨는 부분이 있고, 그 아래 입력창이 있다. INSERT INTO user(uid, upw) values('abcde', '12345'); INSERT INTO user(uid, upw) values('admin', 'DH{**FLAG**}'); INSERT INTO user(uid, upw) values('guest', 'guest'); INSERT INTO user(uid, upw) values('test', 'test'); INSERT INTO user(uid, upw) values('dream', 'hack'); 파일을 다운로드해서 init.sql 파일을 살펴보면 위와 같은 계정을 삽입하는 sql 문을..
[드림핵 워게임] error based sql injection 위의 문제를 다음과 같은 과정으로 풀어보았다. 1. 탐색하기 사이트에 접속하면 처음 뜨는 화면이다. admind을 입력해서 전송해보니 완성된 쿼리문이 뜬다. 쿼리 실행 결과에 대해서는 출력되는 내용이 없다. 이 문제의 이름이 error based sql injection이라는 것을 생각해보았다. error based sql injection은 고의로 에러를 발생시켜 출력되는 에러 메시지를 통해 원하는 정보를 노출시키는 공격이다. 에러를 발생시키기 위해 admin' and i=1-- 이라는 값을 입력해보았다. 에러 메시지가 뜬다. 하지만 원하는 정보는 뜨지 않는다. 원하는 정보가 에러 메시지에 보이도록 하기 위해서 적당한 입력값을 찾아야한다. 2. 익스플로잇 코드 작성하기 구글링을 하다가 extractva..
[드림핵 워게임] blind sql injection advanced 위의 문제를 다음과 같은 과정으로 풀어보았다. 1. 페이지 기능과 코드를 확인한다. 사이트에 접속했을 때 처음으로 뜨는 페이지이다. 쿼리문과 uid 입력창을 확인할 수 있다. INSERT INTO users (uid, upw) values ('admin', 'DH{**FLAG**}'); INSERT INTO users (uid, upw) values ('guest', 'guest'); INSERT INTO users (uid, upw) values ('test', 'test'); 다운로드한 파일 중에서 init.sql의 코드를 살펴보면 계정이 3개 삽입되어 있는 것을 확인할 수 있다. 입력창에 guest를 입력하면 상단에는 완성된 쿼리문이 뜨고, guest 라는 계정이 존재하므로 아래에는 user "gu..
[드림핵 워게임] funjs 위의 문제를 아래와 같은 과정으로 풀어보았다. 1. 페이지의 기능을 확인한다. 드림핵 사이트에서 다운로드한 파일을 브라우저에서 실행하면 위와 같은 배너가 창을 마구 돌아다닌다. 입력창에 임의의 입력값 flag를 입력하면 잘못된 입력값이기 때문에 NOP!이라는 문구가 뜨는 것을 확인할 수 있다. 2. 코드를 확인한다. if (flag[_0x374fd6(0x17c)] != 0x24) { text2img(_0x374fd6(0x185)); return; } for (var i = 0x0; i < flag[_0x374fd6(0x17c)]; i++) { if (flag[_0x374fd6(0x176)](i) == operator[i % operator[_0x374fd6(0x17c)]](_0x4949[i], _0x42..
[드림핵 워게임] login-1 위의 문제를 아래와 같은 과정으로 풀어보았다. 1. 페이지 기능을 확인한다. 사이트에 접속하면 뜨는 첫 화면이다. 메뉴바 오른쪽 끝에 있는 Login을 클릭한다. 로그인 폼이 뜬다. 아래에는 register와 forgot password? 라고 써있는 하이퍼링크가 있다. register를 클릭한다. 계정을 등록할 수 있는 폼이 뜬다. userid=user, password=1, Name=user 로 하여 아무 계정을 하나 등록한다. 계정을 등록하면 성공적으로 등록되었다는 텍스트와 함께 백업코드가 출력된다. 등록한 계정으로 로그인한다. 로그인에 성공하면 Home으로 리다이텍트된다. 메뉴바에는 계정 정보가 뜬다. ID : user 를 클릭한다. userID와 UserName, 그리고 UserLevel이 출력..
[드림핵 워게임] session 위의 문제를 다음과 같은 과정으로 풀어보았다. 1. 페이지의 기능을 확인한다. 페이지에 접속했을 때 처음 뜨는 화면이다. 상단 메뉴바에서 Login을 클릭하면 로그인 폼이 뜬다. users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG } 코드를 살펴보면 이미 등록되어 있는 계정이 3개 있는 것을 볼 수 있다. guest 계정으로 로그인해본다. Hello guest, you are not admin이라는 문구가 뜬다. user 계정으로도 로그인해본다. Hello user, you are not admin이라는 문구가 뜬다. admin 계정으로는 로그인을 할 수가 없다. 패스워드가 코드에 드러나있지 않기 때문이다. 2. 코드를 분석한다. if __nam..
[드림핵 워게임] simple-ssti 위의 문제를 다음과 같은 방법으로 풀어보았다. • SSTI 취약점이란? SSTI는 Server Side Template Injection의 약자로, 템플릿에 공격자의 공격코드를 실어보내 서버 측에서 template injection 이 일어나게 하는 공격을 할 수 있는 취약점이다. 1. 페이지의 기능을 확인한다. 페이지에 방문하면 처음으로 뜨는 화면이다. My Pages 목록에서 404Error 를 클릭하면 에러화면이 출력된다. My Pages 목록에서 robots.txt를 클릭하면 robots.txt 문구가 출력된다. url을 확인해보면 host 뒤에 붙은 robots.txt가 출력된 값과 일치하는 것을 볼 수 있다. url에 test123입력해보니 출력값이 test123으로 나온다. 이것으로 url이..