드디어 ! PPR 가젯을 제공하는 문제에 도달했습니다. 문제 보시죠.크... 엄청나게 기네요...중요한 곳은 두 곳이 있습니다. PPR(pop pop ret) 가젯과 setre* 계열 함수의 제공입니다. 즉, 간단한 ROP(Return Oriented Programming)의 개념을 이용한 문제라는 것을 알 수 있습니다 !plt, got, ppr 등을 모두 알고있다고 가정한 후에 문제를 풀겠습니다.먼저 공격 코드를 구성해보면,| buf(268) | +| strcpy@plt | ppr | printf@got+0 | system[0] | +| strcpy@plt | ppr | printf@got+1 | system[1] | +| strcpy@plt | ppr | printf@got+2 | system[2] ..
이번 문제는 fgets 로 입력을 받고 입력받은 것을 strcpy 로 옮겨주는 문제입니다. 버퍼는 256 바이트만큼 입력받는데 fgets 로 1024 바이트만큼 입력받은 값을 옮기기 때문에 취약합니다.먼저, 힌트를 보시면 fake ebp 나 got overwrite 를 사용하라고 나와있습니다.만... 사실 두 가지 방법 외에도 do_system 을 이용한 공격이 가능한데... 이것은 따로 찾아보시기 바랍니다.아무튼... 저는 원래 쉽고 간단한 do_system 으로 풀었습니다만, 여러분들을 위해 !mprotect 라는 함수를 이용한 방법을 소개해드리겠습니다.(워 게임에서 mprotect를 사용한 것은 이 문제가 최초군요.)일단 환경은 ASLR, Ascii-Armor, NX-Bit 입니다. 하지만 stdi..
11번 이후의 FTZ 문제 중 가장(?) 어려울지도 모르는 놈이 등장합니다 !FD_SET과 select는 이곳을 보고 공부하세요.간단히 설명하면 위의 코드는 read로 string 변수에 한 글자씩 입력받는 변수입니다.저희가 오버플로우시켜서 값을 바꿀 수 있지만 중요한 것은 리턴을 할수가 없다는 겁니다.그렇기 때문에 string 보다 높은 주소에 있는 check 값을 0xdeadbeef 로 수정해서 쉘을 획득해야 합니다.소스코드가 매우 간단하죠 ? 결과를 한 번 보세요. 신기하지 않나요 ? 사실 저도 배열이 이렇게 사용될 수도 있다는 것을 이 문제를 통해서 알았습니다 -_-;; 정말 신기하더군요.근데 사실 어떻게 생각해보면 당연하기도 하죠. 주소단위로 접근을 하니까요.아무튼 위의 예제를 보셨다면 풀 수 ..
- Total
- Today
- Yesterday
- security
- Cloud
- JavaScript
- conftest policy
- temlate
- 2xx
- web
- ViaAWSService
- cloudsecurity
- aws
- AWS #CIS
- REACT
- 계정정보저장
- compliance
- terraform
- opensource
- scp
- teplate
- .get()
- IAM
- CIS
- fleet manager
- findinglatestversion
- ControlTower
- platform
- stateType
- 4xx
- steampipe
- defaulttheme
- 우주와컴퓨터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |