일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gui
- BOJ
- C++
- Nebula
- JUCE
- JUCE library
- 백준
- 리듬게임
- 자료구조
- 운영체제
- c++ heap
- go
- JUCE라이브러리
- Docker
- C언어
- C++ gui
- 프로그래밍
- go channel
- C++ gui 라이브러리
- 알고리즘
- 코딩
- JUCE 튜토리얼
- LOB
- C++ library
- tour of go
- a tour of go
- vim-go
- OS
- 공룡책
- 연결리스트
- Today
- Total
목록LOB (3)
CafeM0ca
ID:assassinPW:pushing me away이전 문제에서 strcpy대신 strncpy를 사용한다. ret뒤로 페이로드를 구성 못하게할 셈. FakeEBP를 이용해서 풀어야한다.FakeEbp: leave,ret가젯을 이용하여 eip를 컨트롤한다.leave,ret명령어를 열어보면 //leave,ret을 에필로그라 함leave : mov esp ebp //esp를 ebp로 옮기고 pop ebp //스택 최상단(esp)에서 4byte를 빼고 ebp에 저장한다. pop되니까 당연히 esp값은 +4된다. (스택은 거꾸로 자란다.) ret : pop eip //스택 최상단에서 4byte를 빼고 eip는 스택 최상단을 가리킨다. jmp eip //eip가 가리키는 곳을 실행 return 값으로 leave,r..
ID:giant PW:one step closerhmm.. use ret sled.ret sled: return ret ret ret.... eip point next 4byte stackbuf | sfp | ret | ret's ret | ret's ret's ret| ret's ret's ret's ret| shellcode put on argv[1]Oh.. No addr. add stack addr(possible). after ret, instruction point NOP(sleeeeeeed) expoit maybe easy . this way will be use FC3
ID:bugbearPW:new divide this code get libc offset,execve offset.libc offset + execve offset = execve addr!popen is read from process One thing, you should know that execve addr is fixed any binary file! So. easily get execve addr.print execve == p execve in gdb copy original giant.c to ./tmp(mkdir tmp. tmp directory is acess any user) and add code at giant.c like pictureyou can check execve_addr..