웹해킹(15)
-
DreamHack [web] Carve Party
web분야 워게임 문제 서버는 없고 파일만 존재한다.파일을 다운받으면하나의 html이 존재하고 접속하면호박 그림이 있다.10000번 클릭하면 flag가 출력된다는 것을 추측해볼 수 있다. 노가다로 풀 수 있는 문제 못참지~ㅋㅋㅋㅋㅋㅋㅋㅋ200번 정도 클릭해봤더니 호박에 입이 생겼다.^▽^ 이런 모습이지 않을까?ㅋㄱㅋㄱㅋㄱ 소스코드 확인 $('#jack-target').click() 함수가 counter의 값을 증가시킨다. counter의 값을 수정하면?0이 나왔지만 이상한 문장이 출력되었다.counter의 값을 바꾸면 안되고 클릭을 해야하는 것 같다.내가 10000번을 클릭하면 내 마우스가 세상을 떠날 것 같으니 자동으로 실행되도록 코드를 짰다. var i=0while(ii가 10000보다 작을동안..
2024.05.06 -
DreamHack [web] web-ssrf
dreamhack webhacking의 ssrf에서 파생된 워게임이다. 서버에 접속하면 /home /about /contact 경로가 있다. 아래 image viewer를 누르면 해당 화면이 출력된다. view를 클릭하면dreamhack 이미지가 나오고소스 코드를 확인해보면 엄청 긴 base64로 encoding된 소스 코드를 확인할 수 있다.(밑으로 더 길게 있다,,,) 플래그가 있는 경로 /app/flag.txt를 입력하면 해당 화면이 출력된다.해당 화면에서 출력되는 인코딩형식을 디코딩하면 404 Not Found Not Found The requested URL was not found on the server. If you entered the URL manually please check ..
2024.05.06 -
SSRF
HTTP 라이브러리PHP : php-curlNodeJS : httppython : urllib, requests => HTTP 요청을 보낼 client 뿐만 아니라 server와 server간 통신을 위해 사용되기도 한다. SSRF (Server-Side Request Forgery)웹 서비스의 요청을 변조하는 취약점브라우저가 변조된 요청을 보내는 CSRF와는 다르게 웹 서비스의 권한으로 변조된 요청을 보낼 수 있다. 웹 서비스가 보내는 요청을 변조하기 위해서는 요청 내에 이용자의 입력값이 포함돼야 한다. ex1) 웹 서비스가 이용자가 입력한 URL에 요청을 보내는 경우image_downloader이용자가 입력한 image_url을 requests.get 함수를 사용해 GET 메소드로 HTTP 요청을 보..
2024.05.06 -
DreamHack [web] image-storage
웹해킹의 File Vulnerability에서 파생된 워게임 문제다. 학습한 내용을 바탕으로 문제에 접근하여 보다 쉽게 플래그를 획득할 수 있었다. 서버에 접속하면 Home, List, upload 페이지가 존재한다. 문제 파일은 index.php, list.php, upload.php 총 3개의 php 파일이 있다. upload.php 파일 확인 결과 업로드 된 파일의 이름을 $name 변수에 할당한 후, 그대로 저장하고 있다. 플래그가 /flag.txt 경로에 존재하는 것을 문제 설명을 통해 확인할 수 있다./flag.txt로 이동하여 파일을 읽을 수 있는 command를 php문으로 작성했다.파일을 읽고 내용을 출력하는 cat 명령어를 사용하였다. 정상적으로 업로드가 되었고 /List..
2024.05.06 -
File Vulnerability
File Vulnerability 파일 취약점 File Upload Vulnerability웹 서비스를 통해 파일을 서버의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점업로드될 파일의 이름을 임의로 정할 수 있을 때 발생- 파일 이름에 이용자가 입력한 문자열을 그대로 사용- 이용자의 이메일, 닉네임 등을 포함시키는 등의 소스 코드 패턴 Path Traversal 취약점특정 디렉터리에만 업로드를 허용하는 제약을 우회하여, 임의 디렉터리에 파일을 업로드 할 수 있는 취약점@app.route('/fileUpload', methods = ['GET', 'POST'])def upload_file(): if request.method == 'POST': //POST 요청을 받으면 f = request..
2024.05.06 -
command injection
injection 악의적인 데이터를 프로그램에 입력하여 이를 시스템 명령어, 코드, 데이터베이스 쿼리 등으로 실행되게 하는 기법 command injection 이용자의 입력을 시스템 명령어로 실행하게 하는 취약점 명령어를 실행하는 함수에 이용자가 임의의 인자를 전달할 수 있을 때 발생함 파이썬 웹 애플리케이션에서 입력한 임의 IP에 ping 전송하고 싶을 때 os.system("ping [user-input]") 임의 파일을 읽고 싶을 때 os.system("cat [user-input]") 메타문자 ' ' 명령어 치환 $() 명령어 치환 && 명령어 연속 실행 || 명령어 연속 실행 ; 명령어 구분자 | 파이프 : 앞 명령어의 결과가 뒷 명령어의 입력으로 들어감
2024.03.06