본문 바로가기

Security/Web Hacking16

[bWAPP] XSS - Stored(Change Secret) [난이도 low] 1. Change Secret 페이지에서 XSS 공격 후 SQL Injection(Login From/users) 페이지에서 확인할 수 있습니다. 다음 화면을 출력해보세요. (bee/bug) 해당 문제의 low 난이도로 진입하면 아래와 같은 화면이 뜬다. 시험 삼아 아무 값이나 입력해보았다. secret이 바꼈다는 메시지가 뜬 것 외에는 다른 게 없어서 SQL Injection (Login Form/User) 페이지로 넘어가보았다. 로그인을 하니 위의 화면처럼 secret이 1이라고 되어있는 것을 확인할 수 있었다. 이를 통해 위에서 secret을 변경해줄 수 있을거라 생각했다. 따라서 success라는 문구를 띄우는 alert 스크립트를 입력하고 Change를 눌러 secret을 변경.. 2022. 2. 24.
[bWAPP] XSS - Stored(Blog) [난이도 low] 1. 다음 화면과 같이 경고창을 띄워봅시다. 해당 문제의 low 난이도로 진입하니 아래와 같은 화면이 떴다. 지난 번에 Stored(Blog) 문제에서 입력했던 내용이 남아있는 것을 확인할 수 있다. 이번에 해야하는 건 success라는 문구를 출력하는 alert창을 띄우는 것이므로 해당 문법을 포함한 스크립트 태그를 입력했다. 위와 같이 입력한 후 Submit를 눌렀다. 위와 같이 기대했던 팝업이 뜨는 걸 확인할 수 있다. 2. 사용자의 쿠키 값을 경고창에 띄워봅시다. 지난번에 사용자의 쿠키 값은 document.cookie를 이용하여 볼 수 있다고 했었다. 해당 내용을 alert 창에 띄워야하는 것이므로 alert 안에 해당 내용을 넣어서 스크립트 태그를 작성한다. 위와 같이 입력하.. 2022. 2. 24.
[bWAPP] XSS - Reflected(POST) 1. GET방식과 POST방식의 차이에 대해 간단히 정리해봅시다. 1) GET - 사용자가 요청한 url의 취약한 파라미터를 공격자가 조작하여 공격하는 방법 - 값을 header에서 조작 - 전송할 수 있는 데이터의 양 제한되어 있음 2) POST - 사용자가 요청한 url의 취약한 파라미터를 공격자가 조작하여 공격하는 방법 - 값을 body에서 조작 - 많은 양의 데이터 전송 가능 2. 다음 화면을 띄워보세요. 경고창을 누른 후 화면 (Welcome success 출력) [난이도 low] 아무값이나 입력한 후 Go를 눌렀다. Burp Suite를 사용해서 전달값을 가로채서 확인해보았다. firstname과 lastname이라는 변수에 값이 저장되어 있는 것을 확인할 수 있었다. 여기에 GET 방식에서 .. 2022. 2. 19.
[bWAPP] XSS - Reflected(GET) 1. XSS 취약점이 있는지 알아봅시다. 다음 화면을 띄워보세요. 경고창을 누른 후 화면 (Welcome success 출력) [난이도 low] XSS는 스크립트를 삽입하여 공격하는 기법이다. 따라서 alert창을 띄우기 위해서 스크립트 태그를 입력해보기로 했다. 위와 같이 입력을 하고 Go 버튼을 눌렀다. 원하는 alert 팝업이 제대로 뜨고 원하는 문구가 제대로 출력되는 것을 확인할 수 있다. 난이도 & 결과 화면 확인 [난이도 medium] 이전 low 단계에서 입력했던 값을 그대로 입력해보았다. 하지만 스크립트는 실행되지 않고 success 문구만 제대로 출력되는 것을 확인할 수 있다. 원인을 확인하기 위해 소스코드를 확인해보았다. 내용을 입력받을 때 사용되는 게 xss_get 파일이라는 것과 난.. 2022. 2. 19.
[bWAPP] SQL Injection - POST/search 1. 버프스위트를 이용해 사용자들의 id와 password를 획득하자. [난이도 low] Quest 1) 데이터베이스 정보를 알아내세요. 일단 POST에 대한 내용인 만큼 변수가 제대로 표시되지 않기 때문에 변수를 확인하기 위해 입력창에 아무거나 입력하고 Search를 눌러주었다. Burp Suite로 확인하니 입력창에 대한 변수는 title임을 확인할 수 있었다. Quest에서 말하는 데이터베이스 정보가 정확히 뭘 뜻하는 건지 모르겠어서 힌트를 참고했다. DB버전을 확인하기 위해 @@version, database()를 이용하기로 했다. 해당 내용을 입력해서 넘겨주었다. 원하는 내용을 출력할 수 있었다. 위의 화면을 바탕으로 DB의 버전은 5.0.96-0ubuntu3이고 DB의 이름은 bWAPP임을 확.. 2022. 2. 10.
[bWAPP] SQL Injection - GET/search 1. SQL 기본 지식 정리하기 (쿼리, 테이블 등 기본 용어 및 SELECT문 숙지) 1) SQL - 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 만들어진 프로그래밍 언어 2) 쿼리 (질의) - 데이터베이스에 정보를 요청하는 것 - DB에 대한 명령문 - 전달 과정 : 사용자 -> 쿼리(질의) -> DB 서버 -> 결과 -> 사용자 3) 데이터 정의어 (DDL, Data Definition Language) - 데이터베이스의 구조 정의 - 명령어 ① CREATE (테이블 생성) ② ALTER (테이블 수정) ③ DROP (테이블 삭제, 롤백 불가) ④ TRUNCATE (테이블의 모든 행 삭제, 테이블 구조는 그대로고 데이터만 삭제) 4) 데이터 조작어 (DML, Data Manipulati.. 2022. 2. 10.
[bWAPP] HTML Injection - Stored(Blog) 1. HTML Injection Stored이 무엇인지 간단하게 정리하시오. 1) HTML Injection Stored (저장기법) - 공격자가 취약한 사이트에 악의적인 스크립트가 포함된 게시글 등을 올릴 경우 이 게시물을 열람하면 스크립트가 실행됨 - 공격 당한 사용자는 쿠키를 탈취당하거나 다른 사이트로 리다이렉션 되는 등의 피해를 입음 - 데이터베이스에 저장되고 해당 게시물을 열람한 사용자들이 공격의 대상이 되기 때문에 파급력이 큼 - 공격 방법 ⓐ 악성 행위를 하는 html 코드를 게시물에 심음 ⓑ 사용자가 게시물을 조회하면 악성 html 코드 실행 2. 문제 페이지에 코드를 삽입하여 아래와 같이 이전 QUEST인 html injection - reflected (POST)를 해결하세요. [난이도.. 2022. 2. 8.
[bWAPP] HTML Injection - Reflected(POST) 1. 분명 당신은 검색 창에 아무 의미도 없는 값을 입력했습니다. 하지만 burp suite라는 취약점 분석 도구를 통해 아래의 유의미한 결과를 출력할 수 있게 되었습니다. 이 도구를 통해 아무 값을 입력하여 아래 두 번째 사진과 같이 출력하세요. [난이도 low] burp suite를 키고 Intercept is on으로 바꿔준 뒤 문제에서 제시한 대로 아무 의미가 없는 값을 입력해주었다. burp suite에서 코드를 확인하니 아래에 firstname과 lastname에 asdf라는 값이 입력된 것을 확인할 수 있었다. 여기에서 값을 가로채서 asdf라 입력되어있는 곳에 각각 출력해야할 스크립트를 입력하고 forward 버튼을 눌러 값을 전송해주었다. 원하는 화면을 출력할 수 있었다. 난이도 & 결과.. 2022. 2. 8.
[bWAPP] HTML Injection - Reflected(GET) 1. HTML Injection이 무엇인지 정리하시오. 1) HTML Injection - 공격자가 악의적인 목적으로 html 태그를 삽입하는 공격 - 악의적인 html 태그를 삽입하여 원치 않은 내용을 보게 하거나 다른 사이트로 리다이렉션 하는 등의 공격을 함 2) 종류 ① Reflected(GET) ② Reflected(POST) ③ Stored 3) 반사기법 (Reflected) - url에 공격자가 악의적인 html 태그를 삽입하여 공격하는 방법 - 공격 방법 ⓐ 취약한 변수에 악의적인 html 태그 삽입 ⓑ 사용자가 링크를 누르면 악의적인 html 코드 실행 - 종류 ① Reflected(GET) - 사용자가 요청한 url의 취약한 파라미터를 공격자가 조작하여 공격하는 방법 - 값을 header.. 2022. 1. 30.