rev-basic-4
·
DreamHack/Reverising
"Correct"를 떠야 하니 sub_7 FF793501000를 보자.           반복문으로 28번 반복하여 byte_7FF793503000[i] 에 들어있는 배열값들이랑 일치하는지를 확인한다. 먼저 배열안에 들어있는 것들을 확인하도록 하자.           32개가 있지만 00을 제외하면(의미 없으니) 27개만 해당된다. 다시 돌아가 식을 보자            for ( i = 0; (unsigned __int64)i > 4)) != byte_7FF793503000[i] ) return 0LL; } return 1LL;  if 문에 대한 식을 정리하면  (16 *(a1+i)) | ((a1+i) >> 4) 형 변환에 대한 생략 unsigned __int8 -> uint8_t__i..
(CTF 출제) simple-web-request
·
DreamHack/CTF
문제화면이다. STEP 1을 들어가 보자.             문제코드도 한번 보자.       #!/usr/bin/python3import osfrom flask import Flask, request, render_template, redirect, url_forimport sysapp = Flask(__name__)try: # flag is here! FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FLAG**]"@app.route("/")def index(): return render_template("index.html")@app.route("/step1", methods=["GET", "POST"])def ..
session
·
DreamHack/WEB
간단한 로그인이라 하지만 flag를 딴 사람은 2350명이다. Cookie 문제는 10000명이 넘었는데           문제 화면이다. admin으로 login 하는 거 같다. 코드를 한번 봐보자.            #!/usr/bin/python3from flask import Flask, request, render_template, make_response, redirect, url_forapp = Flask(__name__)try: FLAG = open('./flag.txt', 'r').read()except: FLAG = '[**FLAG**]'users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG}sessio..
web-ssrf
·
DreamHack/WEB
#!/usr/bin/python3from flask import ( Flask, request, render_template)import http.serverimport threadingimport requestsimport os, random, base64from urllib.parse import urlparseapp = Flask(__name__)app.secret_key = os.urandom(32)try: FLAG = open("./flag.txt", "r").read() # Flag is here!!except: FLAG = "[**FLAG**]"@app.route("/")def index(): return render_template("index.html")..
rev-basic-2
·
DreamHack/Reverising
디컴파일한 main이다. 목적은 "Correct"를 하기 위해 "sub_7 FF7 C05 E1000"의 주소를 들어가 보자.                   flag를 출력하는 조건을 보면... 배열 aC 값과 순차적(+ i) a1 값들을 비교해서 모두 같다면 출력해 주는 거 같다. 그러면 배열 aC와 a1 값들이 똑같아야 한다 그렇다면 둘 중 하나만 알아도 된다는 것 배열 aC에 대한 주소가 나와있기 때문에 배열 문자를 조합하면 flag가 출력된다.
rev-basic-3
·
DreamHack/Reverising
왜 항상 나만 오래 걸리는 거 같지 하                       일단 디컴파일을 해줘서 "Correct"에 도달하기 위한 참 조건에 주소를 한번 들어가 보자                       0x18 보다 클 때까지 반복을 하고 byte_7 FF6A6D83000에 배열 안에 있는 것들을 '!='을 이용 계산식을 비교한다. unsigned __int 8 같은 경우 자료형이라 연산에서는 제외시켰다. 참고로 같지 않을 경우 참이 돼버리니 오른쪽에 속한 연산 이랑 결과 값이 계속 같아야 한다. 일단은 byte_7 FF6 A6 D83000에 뭐가 들어있는지 주소를 찾아가 보자.                 배열에는 총 24byte에 데이터가 존재했다. 오른쪽 연산식에 과 항상 같아야 하니 연산..
pathtraversal
·
DreamHack/WEB
디렉터리 조작 취약점이 있다고 한다.          #!/usr/bin/python3from flask import Flask, request, render_template, abortfrom functools import wrapsimport requestsimport os, jsonusers = { '0': { 'userid': 'guest', 'level': 1, 'password': 'guest' }, '1': { 'userid': 'admin', 'level': 9999, 'password': 'admin' }}def internal_api(func): @wraps(func) def de..
rev-basic-1
·
DreamHack/Reverising
Correct에 대한 조건 주소인 sub_7 FF64 B221000을 찾아가 보면....            if 문이 많다 돌려보면 플래그값이 나온다. ASCII 로 변환하면 된다.