안녕하세요! 오랜만에 뵙습니다. 약 5년 만에(는 '17년도에 잠시 들어왔었네요.. ㅎ) 들어왔는데 군대 가기 한달 전에 뭐 하고 있었는지 참 궁금해지네요. 댓글로 질문을 많이 하셨는데 시간도 너무 많이 지났고.. 과연 달아도 보실 분들이 계실까 싶어서 달려다 말았습니다! 예전엔 취약점 쪽을 주로 공부하고 흥미를 가졌었는데 전역을 하고 나이가 들어 취업을 하니 현실이 만만치 않더군요 ㅎ 그냥 저냥 이제 공부하는 것도 올리고 업무하면서 '이렇게 자동화해야지'와 같은 마음이 드는 것들을 올릴 예정입니다. 그 동안 워게임 관련해서 많이 들어오셨던 분들께는 죄송해서.. 14년 작성 글은 남겨둘 예정입니다. 언젠가 업무 적응되면 다시 취약점 공부해야죠! 공격을 모르고 보안을 할 수 없고, 보안을 모르고 공격을 할..
이번 문제는 힌트가 없습니다. 한 번 보시죠.너무 소스코드가 길어서 없어도 되는 부분은 없앴습니다. 중요한 부분은 Null Canary 를 넣어주기 때문에 인자를 길게 구성할 수 없다는 것입니다.그래도 문제가 풀 수 있도록 구성해야 하니 fgets 함수를 제공해주네요. 어떻게 풀어야 할까요 ?ebp 값을 저장해놓고 복구하는 과정이 없고, buffer 의 값을 0으로 모두 초기화시키니...stdin 임시 버퍼를 사용하면 될 것 같습니다. 하지만 문제가 있습니다.(gdb) x/4xw 0x008cb7400x8cb740 :0xfbad22880xb7fa90050xb7fa90050xb7fa9000(gdb) x/4xw 0x008cb7400x8cb740 :0xfbad22880xb7fb50050xb7fb50050xb7f..
Fedora 4 부터는 그 전 문제의 아이디와 비밀번호를 알아야 접속할 수 있습니다.dark_stone 으로 로그인한 후에 문제를 보겠습니다.딱히 어려운 문제는 아닙니다. 랜덤 라이브러리가 걸려있지만, 사실상 없다고봐도 무방합니다. fake ebp 를 사용못하니 그냥 무난하게 풀겠습니다.더미가 존재하지 않기 때문에 ebp 를 덮기위해서는 260개의 문자가 필요합니다.또한 스택에 쌓인 값들을 보니, execl 을 사용하기 위해서는 ret 을 12번 정도주면 될 것 같습니다.일단은 에러가 나는 것을 보기위해 system 함수를 줘서 stderr 값을 out 으로 받았습니다.그 결과, 위의 85 ~ 54 까지의 값을 링크걸어서 실행해주면 될 것 같습니다.링크걸어 줄 파일은 위와 같이 코딩해줬습니다. 이제 링크..
이번 문제는 Fedora 3 LOB 의 마지막 문제입니다 ! 문제보시죠 ~xshell 을 이용해서 풀어봤는데 뭔가 더 보기가 좋네요 ㅎㅎ. 앞으로는 xshell 사용키로 했습니다.아무튼, 이번 문제는 전 문제와 풀이는 같지만 fgets 함수의 임시버퍼 부분을 지웁니다.xinetd 환경이라는 것을 빼면 다를 것이 없지만 전 문제와 똑같은 방식으로 풀면 풀리지 않을 확률이 높습니다.왜 그런지에 대해서 한 번 보고 시작하죠.일단 printf@got 주소는 0x804984c 입니다. 그렇다면 got 의 주소와 범위를 살펴보도록 하죠.data 영역의 주소와 printf@got 주소의 차이가 0x10 밖에 안나기 때문에 가젯을 잘못사용하면, data 영역을 침범하는 사태가 발생합니다. 그렇기 때문에 이번 문제에서는..
드디어 ! 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 로 수정해서 쉘을 획득해야 합니다.소스코드가 매우 간단하죠 ? 결과를 한 번 보세요. 신기하지 않나요 ? 사실 저도 배열이 이렇게 사용될 수도 있다는 것을 이 문제를 통해서 알았습니다 -_-;; 정말 신기하더군요.근데 사실 어떻게 생각해보면 당연하기도 하죠. 주소단위로 접근을 하니까요.아무튼 위의 예제를 보셨다면 풀 수 ..
끝이 다 와갑니다 !문제 17번을 보겠습니다.이번에는 전 문제와 달리 쉘을 실행시켜주는 부분이 사라졌네요 !그렇기때문에 저희가 쉘코드를 환경변수에 올려주고 그 부분으로 call을 진행해야 합니다.보시면 fgets로 48개를 받는 것을 볼 수 있는데 40개 이후로 call의 주소 값을 조정할 수 있습니다.결과적으로 0x42424242 라는 주소에는 아무것도 없다고나오면서 에러를 보여줍니다.그렇다면 저 곳에 저희가 올려놓은 쉘코드의 주소를 올려주면 어떻게 될까요 ?위와 같은 소스코드를 작성해주세요. 더 자세한 것을 보시려면 이곳으로 가시면 됩니다.( BOF를 체계적(?)으로 배우실 수 있어요 ! ) 아무튼 컴파일하고 실행해보면,쉘코드의 정확한 위치를 구할 수 있습니다.이를 토대로 공격을 수행해보면,답해봅시다..
- Total
- Today
- Yesterday
- opensource
- temlate
- findinglatestversion
- 우주와컴퓨터
- defaulttheme
- CIS
- platform
- security
- compliance
- aws
- 계정정보저장
- IAM
- AWS #CIS
- 4xx
- steampipe
- .get()
- terraform
- REACT
- teplate
- conftest policy
- cloudsecurity
- ViaAWSService
- fleet manager
- 2xx
- JavaScript
- scp
- ControlTower
- web
- stateType
- Cloud
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |