본문 바로가기

WarGame/WebGoat8

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.
WebGoat sql injection 문제 풀이(1) Sql 명령어는 세가지 카테고리로 나눌 수 있다.DDL (데이터 정의어) 데이터 구조를 정의CreateAlterDropTruncateRename DML (데이터 조작어)저장된 데이터를 다루는 역할SelectInsertUpdateDeleteDCL (데이터 제어어)데이터 베이스에 대한 접근 권한 제어로 권한을 부여하거나 회수한다 GrantRevoke WebGoat에서 sqli 파트는 총 4가지가 있다 그 중에서 intro 부분에서도 몇가지만 기록하려 한다11번 (compromise confidentiality)기밀성을 침해해야하는 문제이다. 다른 사람의 data까지 다 보이게 하기 위해선 Smith라는 정보가 들어가되 TAN 부분을 주석처리 하면 된다. Smith'--위의 것을 Employee Name에.. 2025. 8. 28.