일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Docker
- JUCE라이브러리
- LOB
- 연결리스트
- 백준
- go channel
- 리듬게임
- gui
- a tour of go
- 프로그래밍
- tour of go
- JUCE 튜토리얼
- c++ heap
- C++
- go
- JUCE
- C언어
- C++ library
- C++ gui
- vim-go
- BOJ
- 운영체제
- 코딩
- Nebula
- C++ gui 라이브러리
- OS
- 알고리즘
- 자료구조
- 공룡책
- JUCE library
- Today
- Total
CafeM0ca
입장 ID:orc입장 PW:love eyuna 인자가 2개 이하인지 확인, 환경변수 초기화, argv[1][47]이 \xbf인지 확인, argv[1]의 길이가 48보다 큰지 확인, 버퍼 40바이트 0으로 초기화 하고 있다. gdb에서 main+278에 브레이크 포인트를 잡아주자. 스택구조는 아래와 같다.buffer 40 | SFP 4 | RET 4 여태까지 argv[1]에 nop을 넣고 쉘코드를 실행시켰는데 argv[1]이나 버퍼를 사용하지 못하니 argv[2]에다 nop을 올려놓겠다.argv[2]에 nop을 전달하는 방법은 아래와 같다.r python-c′pr∫A⋅44+\xaa\xbb\xcc\xbf′ python-c′pr∫\x90⋅200′ argv[2]의 주소를 찾아..
입장 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 '..