쉬운(?) RTL 문제를 풀어보겠습니다.조건도 그렇고 푸는 것 자체가 RTL이죠 ? 스택을 이용하려하면 스택이 널 배신했다고 나오네요.간단한만큼 빠르게 풀어보겠습니다. 일단 시스템 함수의 위치를 찾아보죠 ~시스템 함수의 위치는 0x40058ae0 입니다. 그런데 하나 필요한 것이 더 있죠 ? /bin/sh을 찾아보겠습니다 ~Redhat 7.3에서 했던 것을 우려먹어봅시다... 아무튼 결과적으로,그럼 공격코드는 로 구성되네요.바로 공격해보겠습니다.new divide !
앞에서 설명드린 개념을 이해하셨다면 이제 이 문제를 혼자서도 해결하실 수 있을 것입니다.그래도... 풀이는 해야하니... 소스코드는 (1)에서 보셨을테니 gdb로 바로 분석하면서 가보죠 !main 함수의 leave; ret 부분과 problem_child 함수의 leave; ret 부분에 브레이크포인트를 걸어줍니다.그리고 run `python -c 'print "B"*4 + "A"*36 + "\x40"'` 으로 실행해주세요.앞의 두 부분은 problem_child 함수의 leave; ret 부분인데요. (1)에서 해드렸던 대로 분석해보세요.(아마 제가 (1)에서 언급했던 것들에 대해서 알 수 있으실 겁니다.)아무튼 전 main 함수의 leave 전에 멈춰있습니다. leave 를 수행하기 전에 스택의 상황..
소스코드 바로 보겠습니다.보시면 빨간색으로 네모친 부분에서 strncpy 함수로 할당한 버퍼보다 1 바이트 더 큰 값을 입력받습니다.gdb를 이용해서 공격해보겠습니다.ebp 값을 유지하기 위해서 39 바이트만 넣어봤습니다.(마지막 널값.)그랬더니 0x42424242로 리턴해버리네요 ?? 왜 그럴까요 ? 왜 이와같은 결과가 나오는지 알기 위해서는 leave; ret 에 대해서 알 필요가 있습니다.프로그램의 프롤로그 부분인 push ebp; mov esp, ebp(인텔기준)은 많이 보셨겠지만, leave; ret은 생소한(?) 분들도 계실겁니다.(사실 leave가 생소하죠...)문제를 풀기 전에 leave; ret의 동작을 파악해보도록 하겠습니다.(그만큼 중요하고 앞으로는 설명안합니다.)위와 같이 브레이크포..
- Total
- Today
- Yesterday
- terraform
- stateType
- .get()
- scp
- REACT
- findinglatestversion
- conftest policy
- temlate
- compliance
- defaulttheme
- aws
- security
- opensource
- IAM
- 2xx
- teplate
- 4xx
- ViaAWSService
- steampipe
- 계정정보저장
- web
- AWS #CIS
- Cloud
- CIS
- JavaScript
- fleet manager
- ControlTower
- platform
- cloudsecurity
- 우주와컴퓨터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |