일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- siss
- hackctf
- BOJ
- 기계학습
- 풀이
- PHP 웹페이지 만들기
- Javascript
- The Loard of BOF
- 웹페이지 만들기
- c
- CSS
- Sookmyung Information Security Study
- Python
- lob
- 생활코딩
- 파이썬
- HTML
- 머신러닝
- 드림핵
- C언어
- BOJ Python
- WarGame
- 백준
- 숙명여자대학교 정보보안동아리
- SWEA
- 자료구조 복습
- c++
- XSS Game
- 숙명여자대학교 정보보안 동아리
- hackerrank
- Today
- Total
목록lob (5)
혜랑's STORY
문제를 풀기 위해 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]가 ..
문제를 풀기 위해 xshell에 로그인 해 주었다. ID : cobolt / PW : hacking exposed 가장 먼저 존재하는 파일을 알아보기 위해 ls -l 명령어를 실행하였다. goblin.c 파일의 내용을 확인해 보자. Lv.2와 같이 버퍼에 16 바이트를 할당하고 있어 쉘코드를 담기엔 충분하지 않다. 앞선 문제와 다른 점은 strcpy가 아닌 gets 함수를 사용한다는 점이다. 그러나 gets 함수 또한 문자열의 길이를 검사하지 않는 취약점이 존재한다. 앞에서 실행인자에 쉘코드를 전달하는 방법을 사용했기 때문에 이번엔 환경변수를 선언하여 문제를 해결하려 한다. 환경변수를 선언하는 방법은 다음과 같다. export SHELLCODE=`python -c 'print "\x90"*100 + "\..
문제를 풀기 위해 xshell에서 로그인 해 주었다. Id : grmlin / Pw : hello bof world 가장 먼저 존재하는 파일을 알아보기 위해 ls-l 명령어를 실행하였다. 그 결과 cobolt.c 파일과 cobolt라는 파일이 있는 것을 확인할 수 있다. cobolt 파일은 colbolt.c 파일을 컴파일하여 만들어진 파일인 것 같다. cobolt.c 파일을 열어 내용을 확인해 보았다. Lv.1 문제와 같이 strcpy 함수를 사용하여 문자열의 길이를 검사하지 않는다는 취약점이 있었다. 그러나 이번 문제에서는 buffer에 16바이트를 할당하였기 때문에 버퍼에 공격 코드를 담기엔 충분하지 못하다. 일단 권한 문제를 해결하기 위해 cp 명령어를 통해 복사를 해주었고, 그 결과 gremlin..
문제를 풀기 위해 xshell에서 gate로 로그인 해 주었다. ID : gate PW : gate 가장 먼저 존재하는 파일을 알아 보기 위해 ls -l 명령어를 실행하였다. 그 결과 gremlin.c 파일과 gremlin이라는 파일이 있는 것을 확인할 수 있다. gremlin 파일은 gremlin.c 파일을 컴파일하여 만들어진 파일 같다. gremlin.c 파일을 열어 내용을 확인해 보도록 하자. 위 코드를 살펴본 결과 256 바이트 버퍼 buffer를 스택에 할당한 후, strcpy 함수를 통해 argv[1]의 내용을 buffer에 복사하게 된다. strcpy 함수가 buffer를 복사할 때, buffer의 크기인 256 바이트가 넘는 문자열을 전달한다면 길이 제한 없이 문자열이 복사되어 스택 버퍼 ..