HTTP 프로토콜의 Connectionless 와 Stateless 특징 때문에 웹 서버가 클라이언트를 기억 X\-> Statekess란 무상태로 서버가 클라이언트의 이전 상태를 보존하지 않는 것\-> Connectionless란 비연결성으로 클라이언트-서버의 요청,
HTTP란 서버와 클라이언트의 데이터 교환을 요청과 응답 형식으로 정의한 프로토콜기본 매커니즘은 클라이언트가 서버에게 요청하면 서버가 이에 응답하는 것웹 서버는 HTTP 서버를 HTTP 서비스 포트에 대기시키고 포트는 일반적으로 TCP/80 혹은 TCP/8080네트워크
코드 확인\-> session_storage 를 반환하는 페이지 발견해당 페이지 확인\-> admin의 session ID 획득로그인 된 상태에서 session ID 변경
XSS 취약점은 웹 리소스에 악성 스크립트를 삽입해 웹 브라우저에서 실행시키는 방식SOP 보안 정책의 등장으로 다소 발생시키기 힘들어진 공격이지만 우회를 통해 여전히 존재✅SOP란? Same Origin Policy의 약자로 브라우저가 가져온 정보 중 프로토콜, 포트,
위 페이지 URL에서 alert 스크립트가 동작하지 않는 것을 미루어 보아 XSS 방지를 위한 필터링 코드가 동작하는 것이라 유추할 수 있다따라서 필터링을 우회하기 위해 <svg/onload="alert(1)"> 을 파라미터로 입력하였고 스크립트가 동작하는 것을
CSRF는 임의 이용자의 권한으로 임의 주소에 HTTP 요청을 보낼 수 있는 취약점동작하기 위해서 공격자의 악성 스크립트를 이용자가 실행해야 한다\-> 공격자가 메일을 보내거나 글을 작성해 이용자가 조회하도록 유도XSS와 동일하게 클라이언트 대상 공격이며 악성 스크립트
문제의 코드를 보면 마지막 부분에 위와 같은 함수가 존재한다파라미터로 pw를 입력하면 비밀번호를 재설정 해주는 함수로 이를 이용해 admin 계정으로 접속/vuln 페이지에는 xss 필터가 걸려 있어 우회해 보려 했지만 실패결국 /flag 페이지를 이용해 admin의
데이터베이스의 정보를 저장하고 관리해 주는 DBMS (Database Management System) 는 크게 관계형과 비관계형으로 분류된다관계형 : 행과 혈의 집합인 테이블 형식으로 데이터를 저장 ex) MySQL, MariaDB, PostgreSQL, SQLite
초기 로그인 화면은 위와 같다. admin 계정으로 로그인 하는 것이 목표이다구상한 방법은 id = admin , pw = injection 혹은 id = admin + injection , pw = dummy 이다이후 두 방법 모두 작동하지 않을 시 필터링이 존재하는
시스템 명령어를 실행하게 만드는 공격메타 문자\-> '' : 명령어를 치환하여 '' 안의 명령어를 실행한 결과로 치환\-> $() : 안의 명령어를 실행한 결과로 치환, 중복 가능\-> && : 앞 명령어에서 에러가 발생하지 않아야 연속 실행\-> || : 앞 명령어에
ping 기능을 제공하는 페이지이다결과로는 당연히 ping 결과가 나오지만 뒤에 문자를 붙이면 설정된 명령어를 알 수 있다하지만 명령어에 " 기호를 붙여 인젝션을 시도하면 형식을 맞추라는 경고 문구가 나온다서버에 요청을 보내기도 전에 웹 페이지 단에서 필터링이 적용된
파일 업로드 취약점으로 서버의 파일 시스템에 업로드할 때 발생대표적으로 Path Traversal 공격\-> 사용자가 업로드될 파일의 이름을 자유롭게 조작할 수 있을 때 발생\-> ../ or .. 등으로 경로 탐색악성 파일 업로드\-> 웹 쉘 업로드✖️ 웹 서버는 .
업로드 기능과 업로드 시 조회 기능이 있는 웹 페이지이다app.py 코드에서도 확인할 수 있지만 조회 URL은 아래와 같다여기서 URL을 조작해 서버의 파일 시스템을 돌아 다니며 flag를 찾을 수 있을 것이다사실 ../flag.py 로 고치면 바로 flag를 얻을 수