대망의 Fake EBP 입니다 ! 말 그대로 EBP를 가짜로 만들어 주는 기법입니다 ~문제 바로 보겠습니다.전 문제와 달라진 부분은, 1. 버퍼를 초기화시키지 않는다.2. strcpy가 strncpy가 되면서 48 글자까지만 입력이 가능하다. 두 부분입니다. 이제 환경변수도 이용하지 못하는군요...남은 것은 leave 뿐입니다 ! 이 문제의 핵심은 leave로 다시 한 번 점프해서 자신이 원하는 곳을 EBP로 만들 수 있다는 것에 있습니다.gdb를 이용해서 EBP로 만든다는 것이 무슨 뜻인지 확인해보겠습니다.ebp의 값을 0xbfffa9c 로 조작하고, ret은 leave를 가리키도록 프로그램을 실행했습니다.(leave와 ret에만 브레이크포인트를 걸었습니다.)처음 ret가 수행되기 전에는 ebp는 0x..
이번에는 스택도 RTL도 이용할 수 없습니다.소스코드를 한 번 보시면,리턴주소의 맨 처음 바이트에 스택과 공유라이브러리 영역에 대한 것을 원천차단해놨군요...하지만 ! argv[1]와 환경변수 모두를 차단하지는 않았습니다. 즉, 두 개 모두 사용해야 풀 수 있는 것 같습니다.문제 12번을 제대로 이해하시고 직접 해보셨다면 풀면서 확 ! 떠오르는게 있으실 수도 있습니다만...바로 설명드리겠습니다.leave; ret 에 대한 내용은 모두 아신다고 가정하고 ret의 동작에 대해서만 다시 한 번 살펴보죠.ret: pop eip; jmp eip -> 와 같이 동작한다고 설명해드렸습니다. 또한, pop을 하므로 esp의 값이 4 바이트만큼 증가한다고 설명했었구요.뭔가 아이디어가 떠오르시지 않으시나요 ? 그렇습니다...
소스코드가 너무 길어서 중요한 부분만 캡처했습니다.(위에 권한을 해결하는 부분이 있는데 복사해서 코드만 위치만 바꿔주면 되므로...)결국 execve 함수를 이용해서 풀어보라는 것인데... 이게 또 생각없이 접근하면 머리가 아파지는 문제입니다. 먼저 execve 주소는 0x400a9d48 이곳입니다.(p execve로 구하거나 프로그램을 실행하면 그냥 주소를 출력해줍니다.)그렇다면 공격 코드는 ./giant `python -c 'print "A"*44 + "execve 주소" + "AAAA" + "인자1" + "인자2" + "인자3"'` 으로 구성되어야 합니다. 인자 1은 /bin/sh의 주소를 전달하면 되고, 인자 2는 {"/bin/sh", 0}으로 전달해야 하고, 인자 3의 경우는 4 바이트가 0인 ..
- Total
- Today
- Yesterday
- AWS #CIS
- .get()
- platform
- stateType
- ViaAWSService
- teplate
- 계정정보저장
- ControlTower
- IAM
- defaulttheme
- CIS
- fleet manager
- scp
- temlate
- 2xx
- 우주와컴퓨터
- REACT
- aws
- conftest policy
- terraform
- compliance
- JavaScript
- cloudsecurity
- 4xx
- Cloud
- web
- findinglatestversion
- steampipe
- security
- opensource
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |