[DreamHack] [web] [beginner] file-download-1 풀이

2024. 11. 14. 20:48Information Security 정보보안/DreamHack

728x90

배울내용 

dreamhack,

web hacking,

개발자도구,

dreamhack 풀이,

dreamhack file-download-1문제,

dreamhack web 풀이 ,

BurfSuite  

 

 

문제

 

 

 

 

File Download 취약점이 존재한다는것 같다

먼저 문제링크를 들어가게 되면 Home 화면으로 Please upload your memo 라고 뜨고 

upload my memo 라는 상위 네비가 있어서 클릭해 본다 

 

 

 

 

아래처럼 파일이름과 내용을 입력하고 업로드를 하게 되면 아까 봤던 Home 화면에 아래처럼 보이게 된다 

 

 

 

 

그리고 클릭하게 되면 아래처럼되는데 이걸 클릭하면 아까 입력했던 제목과 내용이 나오게 된다 

그러면 filedownload 를 어떻게 이용해볼까? 

 

기존코드에 아래의 것을 추가해주면 된다 

이는 .. 은 이전파일을 말하는건데 ../을 여러개해주면 가장 첫 화면으로 가고 거기서부터 etc/passwd 를했을때 성공이 되면 filedownload 취약점이 나오게 된다 

 ../../../../../../etc/passwd

 

 

 

이것을 개발자 도구로 이용하여 html 을 수정을 아래처럼 하고 클릭을 해보자

 

 

 


그러면 아래처럼 etc/passwd 에 아이디에 대한 정보를 뽑아낼수가있다 

만약 이를 막는 방법을 알고싶다면 아래의 링크를 따라가자 

 

 

 

https://sarimus.tistory.com/67

 

Web Security DAY_009 upload 취약점 , download 취약점 , 업로드 취약점 , 다운로드 취약점 , webshell.php ,

배울내용: upload 취약점 download 취약점 업로드 취약점 다운로드 취약점 webshell.php 웹쉘 c99.php c99 웹 해킹 url 로 웹해킹하기 VM에 mini 서버를 켜주고 바탕화면에서 txt 하나를 만들어준다 이렇게 만들

sarimus.tistory.com

 

 

 

다시 본문으로 돌아와서 위와 같은 방법을 이용하여 flag.py 를 다운받으면 성공플레그를 뛰울수있을것이다

 

 

 

 

 

 

 

 

추가적으로 코드를 확인해봤는데 


@APP.route('/upload', methods=['GET', 'POST'])
def upload_memo():
    if request.method == 'POST':
        filename = request.form.get('filename')
        content = request.form.get('content').encode('utf-8')

        if filename.find('..') != -1:
            return render_template('upload_result.html', data='bad characters,,')

        with open(f'{UPLOAD_DIR}/{filename}', 'wb') as f:
            f.write(content)

        return redirect('/')

    return render_template('upload.html')

 

여기에서 파일제목에서 ".." 을찾아서 bad character 를 뛰우는게 아마 파일을 업로드할떄 ../../ 을 이용하면 안되고 html 을 수정하면 될것이다. 

 

 

728x90