일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C++ library
- OS
- a tour of go
- Docker
- 공룡책
- C++ gui 라이브러리
- c++ heap
- go
- go channel
- 연결리스트
- JUCE라이브러리
- Nebula
- gui
- C++
- vim-go
- BOJ
- 운영체제
- 자료구조
- 백준
- JUCE 튜토리얼
- 코딩
- 프로그래밍
- JUCE library
- 알고리즘
- tour of go
- 리듬게임
- C++ gui
- LOB
- JUCE
- C언어
- Today
- Total
CafeM0ca
입장 ID: cobolt입장 password: hacking exposed 소스코드를 확인하자. goblin은 cobolt와 다른 점은 gets함수로 입력을 받고 있다.그리고 gets함수에서 오버플로우가 발생한다. 접근 방식은 이전 문제와 같이 환경변수를 사용하겠다. 환경변수에 쉘코드를 올려주고 환경변수 주소를 구하는 소스코드를 작성후 컴파일한 뒤 실행시킨다. 환경변수 주소: 0xbffffb59 스택상태는 아래와 같다.buffer 16 | SFP 4 | RET 4 페이로드는 아래의 구조로 입력한다."A"*20 | &(환경변수) 입력이 함수로 인자전달이 아닌 표준입력이므로 cat을 사용하여 전달하겠다.-cat은 표준입력으로 문자열을 받아서 그대로 출력해준다.->리다이렉션(python -c 'print "A..
입장 ID: gremlin입장 password: hello bof world 이번 몬스터는 cobolt다.코드를 확인하자. gremlin과 같은 코드이지만 버퍼가 256바이트에서 16바이트로 줄었다. 이번에는 환경변수를 통하여 공격을 시도하겠다.export Shell=`python -c 'print "\x90"*300 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"'` 환경변수에 위의 쉘코드를 올리자! 스택 구조buffer 16 | SFP 4 | RET 4 | 모카는 아래와 같이 페이로드를 작성할 것이다.buffer A*20 | &(환경변수) 이제 환경변수 주소를 구..
ID:gatepassword:gate 첫 발걸음을 때보자! 처음 파일을 ls명령으로 확인해보니 gremlin과 gremlin.c가 있었다.소스코드를 확인해보니 argv로 인자를 전달받고 buffer가 256바이트이며 strcpy로 argv[1]을 버퍼에 복사한다. 원본파일(gremlin)은 gdb로 디버깅이 안되니 복사본(gremlia)를 만들었다. 이름은 어떻게되든 상관없으나 글자 수는 맞춰주자!여기서! strcpy부분에 만약 argv[1]이 buffer보다 큰 메모리를 가지고 있다면 buffer는 argv[1]의 메모리가 초과하여 오버플로우가 발생한다. 이제 gdb로 디버깅하여 스택을 살펴보자! 그리고 리턴주소를 찾아 아래의 쉘코드를 삽입하면 우리는 쉘을 획득할 수 있다.\x31\xc0\x50\x68..