본문 바로가기

Security118

[Dreamhack System Hacking] STAGE 10 - basic_exploitation_002 보호되어 있는 글 입니다. 2022. 2. 19.
[Dreamhack System Hacking] STAGE 10 - 함께실습 [함께실습] Exploit Tech: Format String Bug 1. Format String Bug 1) Format String Bug - printf 함수 등 포맷 스트링을 사용하는 모든 함수는 해당 버그가 발생할 수 있음 (fprintf, sprintf 등) 2) 예제 코드 - 목표 : changeme의 값을 1337로 바꾸기 // Name: fsb_overwrite.c // Compile: gcc -o fsb_overwrite fsb_overwrite.c #include #include #include void get_string(char *buf, size_t size) { ssize_t i = read(0, buf, size); if (i == -1) { perror("read"); e.. 2022. 2. 19.
[Dreamhack System Hacking] STAGE 10 [Memory Corruption : Format String Bug] 1. 포맷 스트링 1) 포맷 스트링 - 구성 : %[parameter][flags][width][.precision][length]type 2) 형식 지정자 (specifier) - 인자를 어떻게 사용할지 지정 형식 지정자 설명 d 부호 있는 10진수 정수 s 문자열 x 부호 없는 16진수 정수 n 인자에 현재까지 사용된 문자열의 길이를 저장 p void형 포인터 3) 너비 지정자 (width) - 최소 너비 지정 - 치환되는 문자열이 이 값보다 짧을 경우, 공백문자 패딩 너비 지정자 설명 정수 정수의 값 만큼을 최소 너비로 지정 * 인자의 값 만큼을 최소 너비로 지정 cf) "%n"의 쓰임 - 포맷스트링의 인자가 사용자의 입력에 영.. 2022. 2. 19.
[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.
[Dreamhack System Hacking] STAGE 9 - out_of_bound 보호되어 있는 글 입니다. 2022. 2. 17.
[Dreamhack System Hacking] STAGE 9 [Memory Corruption : Out of Bounds] 1. 배열 1) 배열의 속성 - 배열은 연속된 메모리 공간을 점유 - 배열이 점유하는 공간의 크기는 요소의 개수와 요소 자료형의 크기를 곱한 값 - 배열이 포함하는 요소의 개수 = 배열의 길이 - 배열 각 요소의 주소는 배열의 주소, 요소의 인덱스, 요소 자료형의 크기를 이용하여 계산됨 2) Out of Bounds - 배열의 임의 인덱스에 접근할 수 있는 취약점 - 배열의 범위를 벗어나는 참조 - 요소를 참조할 때 인덱스 값이 음수이거나 배열의 길이를 벗어날 때 발생 - 개발자가 인덱스 범위에 대한 검사를 명시적으로 프로그래밍하지 않으면 프로세스는 계산한 주소가 배열의 범위 안에 있는지 검사 x - 사용자가 배열 참조에 사용되는 인덱스를 .. 2022. 2. 16.
[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.