본문 바로가기

WebHacking8

[DreamHack]드림핵 File Vulnerability Advanced for linux 해당 문제는 리눅스 환경에서 파일 확인 취약점을 사용하여 flag를 획득하는 문제이다. 소스코드 위의 코드에서 3개의 페이지를 확인할 수 있다. / : index 페이지 /file : 파일을 확인하는 페이지 /admin : 입력받은 명령을 실행하는 페이지 문제풀이 문제 접근 방향 해당 문제의 목표는 /admin으로 접근하여 cmd라는 파라미터를 통해 명령을 실행하여 flag 파일을 실행시키는 것이다. 하지만 /admin으로 접근을 하기 위해서는 환경변수에 저장되어 있는 api_key를 알아내야 하는데 이때 /file의 취약점을 이용하여 해당 서비스 내에서 api_key를 찾아낸 후 /admin으로 접근하여 flag를 실행하면 된다. 사이트를 접속하면 아래와 같은 화면을 확인할 수 있다. @app.rout.. 2024. 1. 5.
[DreamHack] 드림핵 XSS Filtering Bypass 간단한 xss필터링을 우회하는 문제이다. 소스코드 각 페이지 별로 기능을 정리한 코드이다. /vuln : 파라미터값을 리턴하는 함수 /flag : 파라미터 값을 입력받고 flag를 가져와 쿠키로 만드는 함수 /memo : 파라미터에 입력받은 값을 출력하는 함수 xss공격 필터링을 위해 _filter리스트에 문자열을 나열해 둔 후 해당 문자열이 입력되면 ''로 치환하는 함수다. 해당 문제를 해결하기 위해서는 flag페이지를 통해 파라미터값에 xss공격을 시도하고 입력받은 공격은 vuln페이지로 가서 실행이 되고 memo페이지를 통해 flag값을 확인하면 된다. flag 페이지에서 파라미터 값으로 공격코드를 입력해야 한다. 쿠키값을 확인해야 하므로 document.cookie를 실행하면 되지만 해당 코드는 .. 2023. 11. 19.
[DreamHack] 드림핵 amocafe 소스코드 풀이 해당 문제는 비트연산을 통해 나온 결괏값을 다시 초기 상태로 되돌렸을 때의 값을 찾는 문제다. 위의 그림의 값을 초기 상태로 되돌려 input박스에 입력해야 한다. 코드 설명 menu_str = '' # 결과값이 저장될 변수 org = FLAG[10:29] #초기 상태 값 org = int(org) st = ['' for i in range(16)] #문자열 저장공간 16자리를 만들어 둠 변수 생성과 초기 값을 형변환 하여 비트 연산을 준비한다. for i in range (0, 16): res = (org >> (4 * i)) & 0xf #4바이트씩 왼쪽으로 비트를 이동한 후 마지막 4바이트를 res에 저장 if 0 < res < 12: if ~res & 0xf == 0x4: #NOT을 .. 2023. 11. 17.
[DreamHack] 드림핵 random-test 해당 문제는 인증 코드의 취약점을 활용하여 브루트포스 공격을 시도하는 문제이다. 소스코드 풀이 locker_num에는 랜덤 한 소문자 알파벳+숫자, password에는 100~200의 랜덤 한 숫자가 저장되어 있다. 해당 문제에서 중요하게 봐야 할 코드는 아래의 코드이다. if locker_num != "" and rand_str[0:len(locker_num)] == locker_num: ... return render_template("index.html", result = "Good") 해당 코드는 랜덤 한 문자열이 저장되어 있는 rand_str의 0번째부터 locker_num의 길이만큼만 비교를 하여 True일 경우 Good을 리턴한다. 예를 들어 rand_str에 저장된 문자열이 test라 할 .. 2023. 11. 17.