5. basic_exploitation_001
·
Wargame
앞서 basic_exploitation_000 문제와 유사한 문제이다. 우선 코드를 보면 main 함수 실행시 버퍼에 128바이트만큼 할당해주고 initialize함수를 실행한 후 gets를 통해 값을 입력 받아서 buf에 저장을 하는데, gets는 입력받는 값의 크기에 제한을 두지 않아 우리가 스택 구조를 이해하면 RET위치에 원하는 값을 넣을 수 있다. 우리는 이번 문제에 read_flag함수를 볼 수 있을것이다. read_flag함수를 실행하면 플레그를 출력해준다. 그렇다면 우리는 RET에 read_flag함수의 주소를 넣어주면 된다. 우선 디버깅을 통해 스택의 구조를 보겠다. 나는 read_flag라는 함수 명을 알고 있으므로, 해당 위치에 브레이크포인트를 걸어서 read_flag의 주소를 알아낼..
4. basic_exploitation_000
·
Wargame
우선 문제에서 주어진 코드이다. main 함수를 보면 버퍼를 128byte만큼 할당해준것을 볼 수 있다. 이후 initialize 함수가 실행되는데 이는,30초가 지나면 Time out을 출력해주고 프로그램을 종료하는 함수인것 같다. 이후 버퍼의 위치를 출력해준다. 하지만, scanf문을 보면 버퍼의 크기보다 큰 값을 입력받는다는것을 알 수 있다. 해당 파일을 실행하면, 버퍼의 주소가 출력되는데, 이 버퍼의 주소는 동적으로 실행할때 마다 바뀐다. 따라서 payload를 작성할때, 실행하고 버퍼의 주소를 받고 그 주소를 사용해야한다. 우선, 널리 알려져있는 scanf우회 쉘코드를 구글링을 통해 가져왔다. \x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\..
3. XSS-2
·
Wargame
이번 문제는 XSS-1 다음 난이도가 조금 상향된 버전이라고 볼 수 있다. 우선 페이지 구성이 XSS-1 과 유사하고, 인덱스 조차 XSS-1이라고 써져 있다. 하지만 XSS-1의 경우 vuln(xss) page를 들어갔을 경우, 스크립트문이 실행돼 경고 창이 뜨는 반면 이번 문제는 아래 와 같이 변화가 없었다. 이와 같이 스크립트문이 삽입되어 있지만, 실행되지 않는다. 대소문자, 삭제 우회를 사용해 봤으나 alert가 실행되지 않아 검색해봤다. XSS 공격을 우회하는 방법을 검색해봤고 https://blog.rubiya.kr/index.php/2019/03/28/browsers-xss-filter-bypass-cheat-sheet/ 브라우저 XSS 필터 우회의 모든 것 – blog.rubiya.kr 이..
2. Session
·
Wargame
이번에는 session쪽 워게임 문제를 풀어볼 것이다 출처는 dreamhack.io 홈페이지 wargame - session 문제이다 드림핵에서 열어주는 문제 서버로 들어가서 문제를 풀어볼 것이다. 문제는 간단하다 admin 계정으로 로그인에 성공하면 FLAG를 획득할 수 있고, 그 값을 제출하면 된다. 우선 문제 파일을 다운로드 받고 뜯어봤다 #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' users = ..
(워게임 시작) 1. Cookie
·
Wargame
dreamhack.io-Wargame-Cookie 위 해당 주소로 접속을 하게 되면 위와 같은 창이 뜨게 되고 일단 admin 계정으로 로그인하는 것이 목적이므로 Login 버튼을 누른다. ID : admin PW : admin 으로 접속 시도 위와 같이 경고창에 문자 메세지가 뜨는 것을 볼 수 있다. 다시 문제로 돌아와 사이트와 함께 주어진 문제 파일을 봤다. #!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]..
*wargame*
·
Wargame
개념 후 진행 예정