반응형

WEB hacking 109

Dreamhack Black-Hacker-Company WriteUp

문제 풀이app.py/user-page에서 url 파라미터에 url을 입력하여 해당 url의 response를 확인할 수 있다.ALLOW_HOST 중 하나 포함되고, BLASK_LIST에서는 하나도 포함되면 안된다.TOKEN = "{**SWAPED**}"FLAG = "SWAP{sample_flag}"BLACK_LIST = ['file', 'dict', 'sftp', 'tftp', 'ldap', 'netdoc', 'localhost', 'gopher', '127.0.0.1']PASSWORD = f"{random.randint(0, 255):02X}"ALLOW_HOST = ['abcd.com', 'asdf.com', 'example.com']print("password is : " + PASSWORD)@ap..

Dreamhack Special Letter Translator WriteUp

문제 풀이app.pytranslator 페이지에서 dill.loads를 통해 base64로 인코딩 된 데이터를 역직렬화 한다.dill에서 역직렬화 취약점이 존재하기 때문에 RCE가 가능하다. 하지만 vip token이 존재해야지 해당 요청을 전송할 수 있다.@app.route('/translator', methods=['GET', 'POST'])def translator(): token = request.cookies.get('Authorization') decoded_token = verify_vip_token(token) if not decoded_token: return jsonify({"error": "VIP CAN USE!"}), 403 if request.me..

Dreamhack Are you admin? WriteUp

문제 풀이app.py메인 페이지 접근 시 intro 페이지로 리다이렉트 진행한다.intro 페이지에서는 name과 detail 파라미터가 존재하며, intro.html에 값을 전달한다.@app.route("/", methods=["GET"])def index(): return redirect("/intro")@app.route("/intro", methods=["GET"])def intro(): name = request.args.get("name") detail = request.args.get("detail") return render_template("intro.html", name=name, detail=detail)intro.html만약 name과 detail이 존재한다면 ..

Dreamhack Hello, go! WriteUp

문제 풀이app.go 분석 시 template을 사용하는데 name의 값을 %s로 입력 받으며, 사용자 검증이 없기 때문에 SSTI 공격이 가능하다.package mainimport ( "html/template" "net/http" "bytes" "fmt" "strings" "github.com/labstack/echo/v4")func greetHandler(c echo.Context) error { name := c.QueryParam("name") if name == "" { name = "go" } if strings.Contains(strings.ToLower(name),"flag"){ return c.String(http.StatusBadRequest, "flag is not allowed..

bugbountyclub Open Redirect

실습 설명실습 페이지 접근 시 4개의 실습이 존재한다. 실습 1번실습 1번 페이지에 접근하면 URL을 입력하는 입력창이 존재한다. URL 입력 창에 네이버 주소를 입력하여 Submit 버튼을 클릭한다. 네이버 주소를 입력 후 요청을 확인한 결과 redirect_url 파라미터에 입력 값이 들어가며, 응답 패킷에서 Location 헤더에 네이버 주소가 들어가여 네이버 주소로 이동하게 된다.실습 2번실습 2번 페이지 접근 시 here 부분에 링크가 적용되어 있다. 해당 링크를 클릭한다. here 링크를 클릭하면 redirect_url 파라미터에 index.php를 포함하여 요청을 진행한다. 응답 결과에서 Location 헤더에 index.php가 존재하며, index.php 경로로 이동하게 된다. redir..

WEB hacking 2025.07.03

Lab: Password reset broken logic 문제 풀이(WriteUp)

문제 설명패스워드 리셋 기능에서 취약점이 존재한다. 이를 이용하여 carlos의 계정에 로그인하면 문제가 해결된다.문제 풀이로그인 페이지에 접속하면 로그인 기능과 패스워드 찾기 기능이 존재한다. 먼저 로그인을 수행한다. 로그인에 성공하면 My Account 페이지에 접근된다. forgot-password 페이지에 접근하면 입력창에 username 또는 email을 입력 받는다. 이메일을 확인하면 비밀번호 재설정 링크가 존재한다. 해당 링크를 클릭한다. 비밀번호 재설정 링크 접속 시 비밀번호를 변경할 수 있다. 비밀번호를 1234로 재설한 한 후 패킷 확인 결과 username 파라미터에 사용자 계정인 wiener이 존재한다. username 파라미터를 carlos로 변경하여 전송한다. carlos:123..

Lab: 2FA simple bypass 문제 풀이(WriteUp)

문제 설명carlos 계정 페이지에 접근하면 문제가 해결된다.문제 풀이wiener 계정으로 로그인을 성공하면 2차 인증으로 4자리 코드를 입력해야한다. 이메일에서 4자리 코드를 확인한다. 4자리 코드를 입력할 경우 My Account 페이지에 접근된다. carlos 계정으로 로그인을 수행한다. carlos 계정으로 로그인할 때도 /login2 페이지로 이동하여 2차 인증을 요청한다. 하지만 응답에 세션이 존재하는것을 보고 2차 인증을 하지 않고 My Account 페이지에 접근을 시도해보았다. 2차 인증을 하지 않고도 My Account 페이지에 접근이 되었으며, 문제가 해결되었다.

Lab: Broken brute-force protection, multiple credentials per request 문제 풀이(WriteUp)

문제 설명Carlos의 계정으로 로그인에 성공하면 문제가 해결된다.문제 풀이로그인 실패 시 Invalid username or password 에러가 발생한다. password를 브루트 포스 공격한 결과 1분 동안 로그인 차단이 된다. 다음과 같이 비밀번호를 리스트 형식으로 여러 패스워드를 전송할 경우 로그인에 성공하였다.["123456", "password", "12345678", "qwerty", "123456789", "12345", "1234", "111111", "1234567", "dragon", "123123", "baseball", "abc123", "football", "monkey", "letmein", "shadow", "master", "666666", "qwertyuiop", "1..

반응형