본문 바로가기

전체 글74

xss_game 1~2단계 풀이 xss 는 cross site scripting의 줄임말로 공격자가 이 공격을 통해 클라이언트에 있는 쿠키와 같은 주요 정보를 탈취한다. 공격자가 심어둔 악성 코드는 클라이언트에 의해 시행되며 공격자는 접근 제어를 우회하고 사용자로 위장할 수 있다. 크로스 사이트 스크립팅은 2017년 OWASP TOP 10에 들었을 만큼 흔한 웹 취약점이다. xss 공격을 일으키는 시나리오는 1. 쿠키 탈취 2. 악의적인 페이지로 리다이렉트 3. 키로거를 이용한 정보 탈취 등이 있다.이런 공격을 성공시키기 위해서는 태그로 공격 했을때 그것이 클라이언트의 브라우저에서 실행되어야 한다. 예를 들어 img 태그로 공격한 경우 이런 식으로 일부러 src에서 오류를 일으켜 onerror 가 발생하도록 한다. 오류를 일으키지.. 2025. 11. 4.
WebGoat Cross-Site Request Forgeries 문제풀이 3번CSRF (cross-site-request-forgery)이 문제는 제출 버튼을 누르면 특정 사이트로 연결되게끔 되어 있다. 어떤 조건을 만족하면 flag값을 주는데 처음에는 이런 값을 준다. referer (요청을 보낸 곳)과 host가 같아서 flag값을 주지 않는거 같다.실제 코드도 보았는데 referer의 값과 host가 다르면 flag값이 랜덤으로 나오는 것을 알 수 있다. 그래서 burp suite를 이용해 다르게 해주었고 그 결과 해당 값이 나왔다. 이렇게 단순히 referer만 바꿔주는 경우도 있고 html을 새롭게 만들어 같은 브라우저(로그인된 webgoat가 띄워진)에 띄운 후 basic-csrf-flag로 가게끔 설정해주면 위와 같은 값이 나온다. 사실 제출 버튼을 사용자가 누르.. 2025. 9. 10.
WebGoat Security Misconfiguration 문제 풀이 XXE (XML External Entity) : 클라이언트와 XML 형태로 통신을 수행하는 웹 어플리케이션에 외부 엔티티를 삽입해 주요 정보를 유출하는 것이다. xml : 데이터를 저장하고 전달하는 용도의 마크업 언어DTD : xml 문서의 구조와 요소를 정의하는 언어엔터티 : 특수문자나 반복되는 데이터를 표현하기 위한 약속된 표기법외부 엔터티 : DTD 외부에 정의가 있는 사용자 지정 엔터티 유형으로SYSTEM 엔터티를 이용해 URL 지정하는 방식 -> 외부 엔터티에 대한 입력값 검증을 하지 않은 경우 ]> &js; 4번 이 문제는 comment에 어떤 값을 적으면 아래와 같이 기록된다.문제에서 listing the root directory 라고 했기 때문에 root 까지 가기 위해 외.. 2025. 9. 5.
WebGoat sql injection 문제 풀이(4) Path traversal 2번PathTraversal라는 폴더에 저장해야 하는데 현재 메시지를 보면 id에 해당 파일이 저장되는 것을 알 수 있다, 그래서 ../ 이것을 Full Name에 적어서 이전 폴더에 test가 저장되도록 한다. 3번../이 무시되는 것을 알 수 있다. 그래서 인코딩을 해서 접근하려 했지만 디코딩을 하지 않고 그대로 %2e%2e%2f가 그대로 출력된다. 이런 경우 서버에서 ../을 하드코딩으로 막아둔 상태일 가능성이 있으므로 ....//으로 우회하면 뚫리는 것을 알 수 있다. 4번filename또한 파일 경로에 포함되므로 filename 에 ../1.png를 적어주면 풀린다. 5번id에 잘못된 값을 입력하면 파일 경로가 나오는 것을 확인할 수 있다. 해당 디렉토리에는 path.. 2025. 9. 1.
WebGoat sql injection 문제 풀이(3) SQL Injection (mitigation) 6번자바에서는 DB 서버와 연결하기 위해서 DriveManager 클래스의 getConnection() 메소드를 호출한다 . 이때 getConnection() 메소드가 SQLException을 던지고 있기에 try catch 문을 적어줘야 한다. 접속 정보를 잘못 적으면 예외가 발생하기 때문이다. 9번 이 문제는 sql injection advanced에 있던 3번 문제와 연결된다. 거기서 개발자가 sql injection을 할 수 없도록 막아둔 것이다. 3번에서 적었던 답을 그대로 적으니 오류로 using spaces is not allowed가 떴다. 공백 우회 방법에는 여러가지가 있다. 그중에서 내가 썼던 방법은1. %20 2. + 3. \t4. \n.. 2025. 8. 30.
WebGoat sql injection 문제 풀이(2) 3번 문제처음에 Dave와 password만 가져오기 위해 아래와 같이 작성을 했더니 틀렸다는 메세지와 함께 데이터 베이스 구조에 대해서 알려주었다. select * from user_data where last_name= ' 이것이 주어졌기에 문제를 풀기 위해서' union select userid, null, user_name, password, cookie, null, null from user_system_data;-- 이렇게 작성해준다. union을 쓰기 위해선 컬럼 수가 같아야 하고 data type또한 같아야 하기 때문이다. blind sql injection 블라인드 SQL injection은 데이터 베이스에 true 혹은 false 질문을 던지고 애플리케이션의 응답을 바탕으로 답을 알아.. 2025. 8. 29.