swlug

swlug 2학년_1학기_3주차_웹해킹_과제

memo1240 2025. 5. 5. 23:43

공통문제.

https://dreamhack.io/wargame/challenges/416

 

sql injection bypass WAF Advanced

Description Exercise: SQL Injection Bypass WAF의 패치된 문제입니다. 문제 수정 내역 2023.07.24 Dockerfile 제공

dreamhack.io

 

첨부 파일을 다운로드 받았으나.. 잘 모르겠지만 일단 프로그래밍 구성이 아니고 힌트를 얻을 수 없다는 것을 알 수 있음

첨부파일에 들어있던 파이썬 파일을 열어봄

코드를 살펴보면 uid는 입력받고 check_WAF(data)를 통해

keywoerds의 단어들을 필터링 함을 알 수 있음.

or, and, \n, \r 등 주요 키워드를 필터링하여 사용할 수 없음.

또한 lower 함수로 대문자로 우회할 수도 없음..

해당 메세지가 입력되면 오류처리 되기에

주요 키워드를 사용하지 않고 문자를 하나씩 찾아보기로함....

 

uid ='' || uid = concat('ad','min')

필터링이 되지 않는 concat을 사용해서 필터링 되는 admin이라는 문자열 생성

admin 계정의 정보를 불러오도록 함

 

이제 admin의 비밀번호를 하나씩 찾기...

substr(upw, 1,1) = 'd'

 

upw = passward

비밀번호의 첫번째 글자가 d인지 확인해보자..

0도 넣어보았으나 admin이 출력되지는 않았다

이렇게 계속..

사물함 좌물쇠처럼 노가다 작업.. 

for문을 이용해서 돌려보면 좋을 것 같다

 

for position in range(1, 101):
	for char in chars:
    	query = f"' ||uid=concat('ad','min')&&substr(upw,{position},1)='{shar}'#"

2학년 문제1

https://dreamhack.io/wargame/challenges/37/?page=2

 

file-download-1

File Download 취약점이 존재하는 웹 서비스입니다. flag.py를 다운로드 받으면 플래그를 획득할 수 있습니다. Reference Introduction of Webhacking

dreamhack.io

 

첨부파일의 압축을 풀었더니 또 압축된 파일이 나왔다

idel로는 열리지 않아 vs code로 열었다

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)
filename = request.args.get('name', '')
with open(f'{UPLOAD_DIR}/{filename}', 'rb') as f:
    data = f.read()

파일 저장, 파일 읽기 코드인데

UPLOAD_DIR 내에 저장되지만 위의 경로 조작으로 파일 읽기 가능

 

필터는 '..'만 막기에 '....'등으로 우회 가능.

문제 링크 뒤에 우회 주소를 붙여줌

http://host3.dreamhack.games:13027/read?name=....//....//flag.py

flag -> app로 변경도 해봤는데 안된다..

http://host3.dreamhack.games:13027/read?name=....//flag.py

얘도 안되고.. 어디있는거니 파일아

지금 주소 5개를 작성해봤는데

5개 다 안된다


2학년 문제2

 

https://www.root-me.org/en/Challenges/Web-Server/Directory-traversal?lang=en&action_solution=voir#ancre_solution

 

Challenges/Web - Server : Directory traversal [Root Me : Hacking and Information Security learning platform]

 

www.root-me.org

카테고리에 따라서 주소 값의

root-me.org/web-serveur/ch15/ch15.php?galerie=actions

galerie 값이 변화함을 알 수 있다.

 

각 카테고리의 개발자 서버에서도 별다른 점을 찾지 못 해

아예 값을 지워 보았다

86hwnX2r이라는

기존 카테고리 5개 외의 카테고리가 생성된 것이 보인다

 

galerie에 86hwnX2r를 값으로 주었더니

password가 보인다

 

개발자 모드에서 보면, galerie/86hwnX2r/password.txt이라는

password가 담긴 경로를 알 수 있다