일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JUCE
- C언어
- LOB
- go
- c++ heap
- gui
- C++ library
- C++ gui
- 연결리스트
- vim-go
- 공룡책
- JUCE라이브러리
- tour of go
- 백준
- a tour of go
- OS
- 프로그래밍
- BOJ
- 리듬게임
- C++
- 운영체제
- JUCE library
- 코딩
- Docker
- JUCE 튜토리얼
- C++ gui 라이브러리
- 알고리즘
- go channel
- 자료구조
- Nebula
- Today
- Total
CafeM0ca
입장 ID:troll입장 PW:aspirin 소스코드가 많이 짧아졌다. argv[1][46]이 \xff면 종료된다. 스택이 쌓이게 되면 \xff에서 \x00까지 낮은주소로 향하게 된다. 스택 구조는 아래와 같다.buffer 40 | SFP 4 | RET 4 r python-c′pr∫A⋅44+\xaa\xbb\xcc\xbf+\x90⋅130014′를 해준 상태에서 esp를 확인해보니 리턴주소로 사용할 NOP의 주소가 \xff가 아니게 된다. payload./vampire python-c′pr∫A⋅44+&(argv[1][46]이 \xff가아닌 NOP)+x90*130020+쉘코드′ 다음 ID:vampire다음 PW:music world
입장 ID:orge입장 PW:timewalker 레벨이 올라갈때 마다 무언가 하나씩 추가되고 있다.인자는 2개이어야하며 환경변수 사용불가,argv[1][47]은 \xbf, argv[1]의 길이는 48이하, 버퍼 0으로 초기화, argv[1]초기화 된다. 인자가 2개이고 argv[1]과 버퍼가 초기화 되므로 argv[0]을 사용하자. 복사본을 만들고 심볼릭 링크를 걸어주자. main+317부분에 브레이크 포인트를 잡자.스택 구조는 아래와 같다.i 4 | buffer 40 | SFP 4 | RET 4 argv[0]의 주소를 0xbffff944에서 한번 더 들어가서 x/s 0xbffffa3f로 보면 argv[0]의 주소가 나온다. 주소를 구했으니 페이로드를 작성하자.복사본의 심볼릭링킹된 파일을 삭제하고 원본파..
입장 ID:darkelf입장 PW:kernel crashed wolfman.c에서 argv[0]의 길이가 77인지 확인하네요.파일 이름이 argv[0]입니다. 즉 파일이름의 길이를 심볼릭 링크를 통해서 77자를 맞춰주면 되는데요. 여기서 중요한건 ./home이라는 파일이 있으면 4글자가 아니라 ./도 포함되어 6글자가 됩니다. 심볼릭 링크는 ln -s 링크될파일 파일이름 이렇게 사용합니다. 스택 구조는 아래와 같습니다.buffer 40 | SFP 4 | RET 4 argv[2]의 주소를 구하고 리턴주소에 사용할 NOP 주소를 구합시다. 원본파일에 심볼릭 링크를 argv[0]의 길이가 77이 되도록 걸어주고 공격합니다.payload./python-c′pr∫A⋅75′ `python -c 'p..