일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C++ gui
- 알고리즘
- OS
- Docker
- 리듬게임
- 코딩
- 운영체제
- gui
- go channel
- 자료구조
- C++
- C언어
- vim-go
- Nebula
- go
- C++ gui 라이브러리
- LOB
- JUCE library
- 백준
- a tour of go
- BOJ
- JUCE 튜토리얼
- c++ heap
- tour of go
- 연결리스트
- JUCE라이브러리
- JUCE
- 공룡책
- C++ library
- 프로그래밍
- Today
- Total
CafeM0ca
입장 ID: orc입장 PW: cantata 소스코드를 확인해보니 환경변수,버퍼를 초기화 하고 있다. argv[1][47]은 \xbf인지 확인도 한다. 복사본을 만들고 gdb로 확인해보자. main+230에 브레이크 포인트를 잡아준다. 사진을 보면 0xbffffa1c이전 줄에 AAAA 4바이트가 하나 있고 나머지는 다 0으로 초기화 되있는데 이 부분이 buffer를 0으로 초기화 한 부분이다. 스택 구조를 살펴보자. 스택구조는 아래와 같다buffer 40(초기화됨) | SFP 4 | RET 4 공격 스크립트는 아래와 같다."A"*44+"\xaa\xbb\xcc\xbf"+"nop"*200 어떻게 보면 이전 단계와 별 다를게 없다. 버퍼를 초기화 했냐 안했냐의 차이일 뿐이다.스택 상단의 argv[1]이 보인다..
입장 ID: goblin입장 PW: hackers proof 코드를 보니 cobolt에서 환경변수를 사용하여 공격에 성공했었는데 이번에는 환경변수를 0으로 초기화 해버린다.덤으로 argv[1][47]은 \xbf이여만 한다. 복사본을 하나 만들고 gdb로 확인해보자. 스택구조buffer 40 | SFP 4 | RET 4로 구성되었다. 공격은 gate에서 했던 방법으로 공격하겠다. 여기서 리턴 주소를 찾기위해 \xaa\xbb\xcc\xdd를 했었지만 이번에는 argv[1][47]에 \xbf가 있는지 검사하기 때문에 \xaa\xbb\xcc\xbf로 인자를 전달하겠다.그리고 nop 200개정도 넣어준다.스택에서 인자로 전달해준 nop이 있는 주소를 아무거나 사용하자 payload./orc `python -c '..
입장 ID: cobolt입장 password: hacking exposed 소스코드를 확인하자. goblin은 cobolt와 다른 점은 gets함수로 입력을 받고 있다.그리고 gets함수에서 오버플로우가 발생한다. 접근 방식은 이전 문제와 같이 환경변수를 사용하겠다. 환경변수에 쉘코드를 올려주고 환경변수 주소를 구하는 소스코드를 작성후 컴파일한 뒤 실행시킨다. 환경변수 주소: 0xbffffb59 스택상태는 아래와 같다.buffer 16 | SFP 4 | RET 4 페이로드는 아래의 구조로 입력한다."A"*20 | &(환경변수) 입력이 함수로 인자전달이 아닌 표준입력이므로 cat을 사용하여 전달하겠다.-cat은 표준입력으로 문자열을 받아서 그대로 출력해준다.->리다이렉션(python -c 'print "A..