전체 글 80

[dreamhack] level 1 xss-1

/vuln사용자가 입력한 파라미터대로 출력해준다./memomemo= 에 입력한 값을 그대로 출력해준다./flag전달된 url에 사용자가 접속하도록 한다. /vuln@app.route("/vuln")def vuln(): param = request.args.get("param", "") return paramget 방식으로 param을 이용자에게 입력받고 param의 값을 출력한다. /memo@app.route("/memo")def memo(): global memo_text text = request.args.get("memo", "") memo_text += text + "\n" return render_template("memo.html", memo=memo_text)..

CTF & Wargame(WEB) 2025.04.12

[dreamhack] level 2 basic_rop_x86

문제 분석checksec으로 해당 바이너리에 어떤 보호기법이 적용 되어 있는지 확인해보면 NX와 ASLR이 적용되어 있다. 하지만 카나리는 적용 되어 있지 않다.GDB 분석main 함수를 disassemble 해보면 buf 함수가 ebp-0x44에 저장되어 있는 것을 확인할수 있다. 따라서 0x04 크기의 더미값이 스택에 있다는 뜻이다. 위의 정보를 토대로 스택 프레임 구조를 파악해보면 buf(0x40)dummy(0x04)sfp(0x04)ret(0x04)라는 것을 알 수 있다. 익스플로잇 설계해당 바이너를 익스플로잇 하기 위해 우리는 저번 문제에서 사용하였음 ret2main 기법을 사용해 공격을 진행할 것이다.  from pwn import *p = remote('host3.dreamhack.games'..