일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Python
- The Loard of BOF
- Sookmyung Information Security Study
- CSS
- SWEA
- hackctf
- 웹페이지 만들기
- XSS Game
- hackerrank
- 자료구조 복습
- HTML
- lob
- 생활코딩
- 드림핵
- 숙명여자대학교 정보보안동아리
- c
- Javascript
- 숙명여자대학교 정보보안 동아리
- PHP 웹페이지 만들기
- BOJ
- 백준
- 풀이
- WarGame
- C언어
- 파이썬
- siss
- c++
- BOJ Python
- 머신러닝
- 기계학습
- Today
- Total
목록2021 SISS 21기 활동/겨울방학 System (16)
혜랑's STORY
문제를 풀기 위해 xshell로 로그인 해 주었다. ID : troll / PW : aspirin 가장 먼저 존재하는 파일들을 알아보기 위해 ls -l 명령어를 실행하였다. vampire.c 파일의 내용을 확인해 보았다. 이번엔 46번째 자리의 값이 "\xff"가 되면 안되는 것 같다. 즉, Return address에 그보다 작은 주소를 주려면 엄청 큰 값을 넣으면 될 것 같다. 일단 vampire 파일을 복사한 뒤 gdb를 사용하여 main 함수의 어셈블리 코드를 살펴보자. gdb를 통해 스택 상황을 아래와 같다고 생각해 볼 수 있다. buffer SFP RET(return) 40 4 4 argv[2]의 주소를 찾기 위해 strcpy 함수가 끝나는 지점에 bp를 걸고 실행 인자로 "A"*44 + "\..
본 포스팅은 아래 사이트의 내용을 요약한 것이다. 02.ASLR - TechNote - Lazenca.0x0 Excuse the ads! We need some help to keep our site up. List ASLR ASLR(Address Space Layout Randomization)이란? 메모리 손상 취약점 공격을 방지 하기 위한 기술 입니다.스택, 힙, 라이브러리, 등의 주소를 랜덤한 영역에 www.lazenca.net # ASLR(Address Space Layout Randomization) 메모리 손상 취약점 공격을 방지하기 위한 기술로 스택, 힙, 라이브러리 등의 주소를 랜덤한 영역에 배치하여, 공격에 필요한 Target address를 예측하기 어렵게 만든다.] 예) Return..
문제를 풀기 위해 xshell로 로그인 해 주었다. ID : orge / PW : timewalker 가장 먼저 존재하는 파일들을 알아보기 위해 ls -l 명령어를 실행하였다. troll.c 파일의 내용을 확인해 보았다. Lv.7에서는 argc가 2 이상이 되어도 괜찮았지만, 이번 문제에서는 argc가 꼭 2개이어야 한다. 즉, argv[1]의 RET이 agrv[2]를 가리키도록 하는 방법을 사용하지 못한다는 것이다. 환경변수도 초기화하고.. 스택 공간도 초기화하고.. 이제 쉘코드가 들어갈 수 있는 공간은 초기화하지 않는 argv[0]만 남게 되었다. 파일명을 변경하는 방법을 찾아보았다. 파일명 변경 : rename 변경전파일명 변경후파일면 대상파일 다음과 같이 코드를 구성해보았다. 이때 주의해야 할 점..
문제를 풀기 위해 xshell로 로그인 해 주었다. ID : darkelf / PW : kernel crashed 가장 먼저 존재하는 파일들을 알아보기 위해 ls -l 명령어를 실행하였다. orge.c 파일의 내용을 확인해 보자. 이번 문제는 Lv.6에서 argv[0]의 길이를 검사하는 코드가 추가되었다. argv[0]의 길이를 77로 맞춰주기 위해 '/'를 많이 넣어 실행시켜 보았다. stack is still youur friend. 가 출력되는 것으로 보아 argv[0]의 길이 검사가 통과된 것 같다. 6단계 문제를 풀었던 것 처럼 argv[1]이 argv[2]를 가리키도록 하여 공격해보자. `python -c 'print "." + "/"*70 + "cporge"'` `python -c 'prin..
문제를 풀기 위해 xshell로 로그인 해 주었다. ID : wolfman / PW : love eyuna 가장 먼저 존재하는 파일들을 알아보기 위해 ls -l 명령어를 실행하였다. darkelf.c 파일의 내용을 확인해 보자. Lv.5에서 등장한 egghunter와 buffer hunter에 argv[1]의 길이를 검사하는 코드가 추가된 것을 볼 수 있다. 따라서 argv[2]에 쉘코드를 넣고 argv[1]에 RET이 argv[2]를 가리키도록 하여 공격을 해보려 한다. 일단 darkelf 파일을 복사한 뒤 gdb를 사용하여 main 함수의 어셈블리 코드를 살펴보자. gdb를 통해 스택 상황을 아래와 같다고 생각해 볼 수 있다. buffer SFP RET(return) 40 4 4 가장 먼저 argv[..
본 포스팅은 아래 사이트의 내용을 요약한 것이다. 01.NX Bit(MS : DEP) - TechNote - Lazenca.0x0 Excuse the ads! We need some help to keep our site up. List NX Bit(MS : DEP) NX Bit(NX bit, Never eXecute bit, 실행 방지 비트)이란?프로세스 명령어나 코드 또는 데이터 저장을 위한 메모리 영역을 따로 분리하는 CPU의 기 www.lazenca.net 1. NX bit(실행 방지 비트)이란? 프로세스 명령어나 코드 또는 데이터 저장을 위한 메모리 영역을 따로 분리하는 CPU의 기술이다. NX 특성으로 지정된 모든 메모리 구역은 데이터 저장을 위해서만 사용되며, 프로세서 명령어가 그곳에 상주하..
문제를 풀기 위해 xshell로 로그인 해 주었다. ID : orc / PW : cantata 역시 가장 먼저 존재하는 파일들을 알아보기 위해 ls -l 명령어를 실행하였다. wolfman.c 파일의 내용을 확인해 보자. Lv.4에서 등장한 egghunter에 buffer hunter가 추가된 것을 볼 수 있다. 여기서 buffer hunter는 코드상 버퍼를 초기화해준다. 따라서 버퍼 너머의 주소에 Lv.4의 풀이와 마찬가지로 쉘 코드를 넣고 주소를 연결시켜주면 될 것 같다. gdb로 살펴본 스택 상황은 아래와 같다고 생각해 볼 수 있다. buffer SFP RET(return) 40 4 4 따라서 RET의 마지막 주소값엔 "\xbf"가 있으면 된다. 버퍼의 시작 주소를 알아내기 위해 strcpy 함수..
문제를 풀기 위해 xshell로 로그인 해 주었다. ID : goblin / PW : hackers proof 역시 가장 먼저 존재하는 파일들을 알아보기 위해 ls -l 명령어를 실행하였다. orc.c 파일의 내용을 확인해 보자. 앞의 문제에선 보지 못하였던 "egghunter"라는 주석과 함께 "memset()" 이라는 함수가 새롭게 등장한 것을 알 수 있다. 여기서 egghunter는 전역 선언된 environ을 memset()을 사용하여 초기화 한다. 즉, 환경 변수에 SHELLCODE를 넣고 취약한 함수의 return address를 환경 변수의 주소로 바꾸어도, egghunter에 의해 환경 변수가 초기화되기 때문에 환경 변수를 이용할 수 없게 된다. 또한 if문을 통해 argv[1][47]가 ..