본문 바로가기

분류 전체보기267

[Dreamhack System Hacking] STAGE 10 - basic_exploitation_003 보호되어 있는 글 입니다. 2022. 2. 19.
[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.
[BOJ] SISS 겨울방학 스터디 - 8주차 #11720 [문제] [코드 및 결과] #include int main() { int N, sum = 0; char num[100]; scanf("%d\n", &N); for (int i = 0; i < N; i++) { scanf("%c", &num[i]); sum += num[i] - '0'; } printf("%d\n", sum); return 0; } [설명] 숫자의 개수 N을 입력받고 문자열 num배열을 선언하여 여기에 N개의 정수를 저장하도록 했다. (공백없이 입력하는 게 가능하기 때문) 반복문으로 입력받는 정수를 저장하며 동시에 sum에 값을 더해준다. 여기서 문자열로 입력 받았기 때문에 '0'을 빼줘서 정수값을 저장하도록 했다. 마지막으로 위에서 구한 sum을 출력한다. #1085 [문제].. 2022. 2. 17.
[Dreamhack System Hacking] STAGE 9 [Memory Corruption : Out of Bounds] 1. 배열 1) 배열의 속성 - 배열은 연속된 메모리 공간을 점유 - 배열이 점유하는 공간의 크기는 요소의 개수와 요소 자료형의 크기를 곱한 값 - 배열이 포함하는 요소의 개수 = 배열의 길이 - 배열 각 요소의 주소는 배열의 주소, 요소의 인덱스, 요소 자료형의 크기를 이용하여 계산됨 2) Out of Bounds - 배열의 임의 인덱스에 접근할 수 있는 취약점 - 배열의 범위를 벗어나는 참조 - 요소를 참조할 때 인덱스 값이 음수이거나 배열의 길이를 벗어날 때 발생 - 개발자가 인덱스 범위에 대한 검사를 명시적으로 프로그래밍하지 않으면 프로세스는 계산한 주소가 배열의 범위 안에 있는지 검사 x - 사용자가 배열 참조에 사용되는 인덱스를 .. 2022. 2. 16.