본문 바로가기

분류 전체보기

(31)
FTZ #2 ID : level2 Passwd : hacker or cracker - 먼저 hint를 확인 - level3 setuid가 걸려있는 파일 검색 - /usr/bin/editor 실행 VIM 편집기가 실행되는 것을 확인할 수 있다! * vim에서는 '!명령어'를 사용하면 vi 텍스트편집기를 빠져나와서 해당 결과를 보여줌 -> 외부 쉘을 실행시키기 위해 입력모드에서 '!/bin/bash' 입력 - 결과 vi 편집기를 빠져나오고 level3으로 권한이 상승된 것을 확인 가능하다!
FTZ #1 ID : level1 Passwd : level1 파일 목록 중 hint가 있으므로 확인! level2의 setuid가 걸려 있는 파일을 찾기 위해 몇가지 명령어를 알아보자! ① find : 파일 및 디렉토리 검색 ② /dev/null로 출력 버리기 : /dev/null 파일은 항상 비어있으며, 이곳으로 전송된 데이터는 버려짐. 특정 명령어를 실행 후, 출력이 필요없는 경우는 /dev/null로! -> 에러 메시지를 처리할 때도 /dev/null으로 처리하는 것이 좋다! (파일 디스크립터에서 '2'가 에러 출력 담당) - find문 작성 : root부터 user name이 level2이고 다음 level 권한이 있는 파일 검색 find / -user level2 -perm -4000 2>/dev/null..
LOB #5 orc ID : orc Passwd : cantata wolfman에 다음레벨의 seteuid가 걸려있는 것 확인 가능! - wolfman.c 소스 코드 현재 버퍼의 크기는 40이고, 환경변수를 비우는 for loop문을 사용중이다. 또한 strcpy 함수를 사용해서 bof 취약점이 발생하고 있다. 이번 문제에서는 buffer hunter를 사용해서 buffer를 비우는 memset 함수를 사용하였지만 strcpy 함수 이후에 사용하였으므로 상관없음 -> lob 4번과 똑같은 방법으로 풀면된다! main 함수 디버깅으로 가기 전 extern에 대해 알아보고 가자! * extern extern 자료형 전역변수; : 선언한 전역 변수를 다른 파일의 코드에서 사용하고 싶을 때 extern 사용 - main 함수 디버..
LOB #4 goblin - argv[2] + NOP Sled이용 https://rsy99.tistory.com/42에서 main 함수에서 에 breakpoint를 건 이후를 기준으로 한다! 먼저 argv[2]의 주소를 알아내야 한다. 일단 argv[1][47]이 "\xbf"가 되어야 하므로 "\xbf"*48을 해준다. 그 후 " "(공백)를 추가 후 argv[2]를 삽입해줘야 한다. 우리는 argv[2]와 NOP Sled를 모두 이용할 것이므로 argv[2]에 "\x90"*100+"25byte shellcode", 총 125byte가 필요하다. 위와 같이 payload를 작성해준다. 그 후 "A"(41)이 나타나는 주소공간을 찾아주어야한다. 위에서 "00" 이후가 argv[2]의 주소공간이다! argv[2]의 공간 중 하나를 골라 ret에 넣어준다 ret -> 0xb..
LOB #4 goblin - NOP Sled 이용 ID : goblin Passwd: hackers proof 먼저 파일 목록을 살펴보면 orc 파일에 다음 level의 seteuid가 걸려있는 것을 확인할 수 있다 orc.c 소스 코드를 살펴보면, 먼저 버퍼의 크기가 40만큼 할당된 것을 알 수 있고, int i가 선언된 것을 확인 가능 또한 주어지는 인자의 개수가 2 미만이면 종료되는 것을 알 수 있다. 각 번호 별로 주요 소스 내용을 보면, ① * environ int main(int argc, char **argv, char **envp)에서 3번째 인자에 해당 : 환경변수 배열의 포인터. environ을 통해 모든 환경변수에 접근할 수 있으며, 마지막 항목 뒤에는 NULL 값을 가짐. main 함수의 세번째 매개변수를 이용하여 환경 변수 목록을..
#1 기본 사항 / 자주 쓰는 태그 1. 태그는 소문자로 ex) 2. 여는 태그와 닫는 태그를 정확히 입력 - 나 태그처럼 닫는 태그가 없는 태그도 있음 (단일 태그) 3. 적당하게 들여쓰기 4. 태그는 속성과 함께 사용 - 5. 인코딩 방식은 utf-8로 한다. : 한글, 영문뿐만 아니라 모든 언어를 표시할 수 있는 언어세트 6. 웹 문서에서 특수 문자 및 특수 기호 사용하기 화면에 표시되는 모습 특수 기호 & & (공백 한 칸) > " " | | ( ( ) ) , , - - ` ´ - 따옴표나 꺾쇠 괄호를 화면에 그대로 사용해야 할 때 - 공백 처리 여러 번 해야할 때 (스페이스 아무리 눌러도 한 칸만 표시됨,,) - : 시작 태그 - : 브라우저 정보 제공 ① : 문서 제목 ② : 문자 인코딩 및 문서 키워드, 요약 정보 - : 실제..
웹해킹 #6 크로스 사이트 요청 변조(CSRF) 공격 1. CSRF 공격 개요 - 공격자가 피싱을 이용하여 공격 대상이 되는 사용자에게 악성 링크를 누르게 하고, 링크를 클릭하면 사용자 모르게 사용자가 로그인되어 있는 웹사이트의 어떤 기능을 실행하는 것 - 예 : 공격자가 사용자의 패스워드를 본인이 모르는 사이에 변경 후, 변경된 패스워드를 이용하여 웹사이트 접속 * CSRF 공격와 XSS 공격의 차이점 - 공격 과정에서 피싱을 이용하는 특성만 같고, 피싱 이후 진행되는 과정이 완전히 다름! - 공격대상 : XSS – Client, CSRF – Server - 악성 스크립트를 클라이언트에서 실행시키고, CSRF는 웹 서버로 유도해 서버에서 동작하게 함 ① 사용자가 웹사이트에 정상적으로 접속하여 로그인 ② 사용자가 웹사이트에 로그인되어 있는 동안, 공격자가 ..
웹해킹 #5 크로스 사이트 스크립팅 공격 (XSS) 1. 크로스 사이트 스크립팅 공격 - 공격자가 악의적인 스크립트 코드를 웹 애플리케이션에 삽입한 후 웹 사용자의 웹 브라우저에서 해당 코드가 실행되도록 만드는 공격 - "자바스크립트"를 이용하여 공격 수행 - 다른 공격들은 취약점을 가지고 있는 서버쪽을 공격하지만, 크로스 사이트 스크립팅 공격은 서버의 취약점을 이용하여 클라이언트 쪽을 공격 - 공격자가 삽입한 스크립트 코드가 언제 실행되는지에 따라 리플렉티드(reflected) 크로스 사이트 스크립팅 공격과 스토어드(stored) 크로스 사이트 스크립팅 공격으로 구분 ex) ① 세션 쿠키 탈취 - 클라이언트의 웹 브라우저에 있는 세션 쿠키를 자바스크립트를 이용하여 읽어서 알아내기 -> 클라이언트의 웹 브라우저에 있는 세션 쿠키를 자바스크립트를 이용하여 ..