일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Docker
- C++
- 연결리스트
- c++ heap
- 리듬게임
- JUCE library
- JUCE
- JUCE라이브러리
- 백준
- OS
- C++ library
- vim-go
- 코딩
- go channel
- Nebula
- LOB
- BOJ
- 공룡책
- C언어
- tour of go
- a tour of go
- go
- 자료구조
- C++ gui 라이브러리
- JUCE 튜토리얼
- 프로그래밍
- 알고리즘
- gui
- 운영체제
- C++ gui
- Today
- Total
CafeM0ca
입장 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 'print "A"*75'` `python -c 'p..
입장 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 'print "A"*44+"\xaa\xbb\xcc\xbf"'` `python -c 'print "\x90"*200'` argv[2]의 주소를 찾아..