티스토리 뷰
이런... 벌 받았나 봅니다....
후.... 아무래도 이 전 글인 보호 글의 내용 때문에요 ㅠㅠ...(매우 쉬운 비밀번호 ㅎㅎ)
어쨋든 6번 가봅시다 !
일단 소스는 위와 같습니다.( 더 있긴한데 너무 길어져서... 어차피 푸실테니 ㅎㅎ) 먼저 분석 해보세요 !
소스코드 자체는 별로 어렵지 않다는 걸 알 수 있죠 ???
근데 문제는 strncpy <- 이놈 입니다... 보통 보안 코딩쪽으로 볼 때 많이 보이는 녀석...
strcpy의 대체자 녀석 입니다. 이 녀석 때문에 또 별 쇼를 다했네요...;;
한 2시간 40~50분 뻘 짓 하다가 아무래도 안되겠어서(어디서 들어 본적이 있는 것 같아서) strncpy에 대해서 찾아봤습니다.
그렇게 찾다가 이곳을 발견 했습니다 ! 와!!!!!!!!!!!!!! strncpy 에 이런 취약점(?)이 있었다니... 제가 이거 전에도 엄청나게 많은 분석을 했었는데 보시면 아시겠지만, user.name 과 user.password가 붙어 있습니다.
저 곳에서 취약점이 딱! 나타나는 거죠 ! 한 번 살펴볼까요 ?
BreakPoint는 main 함수의 if 부분에 걸었습니다.
저 위의 문장대로 인자를 전달하고 실행시키더라도 프로그램이 종료되지 않습니다. 원래의 strncpy라면 종료되는데 말이죠 !
제가 딱 이 부분까지 발견했을 때, '아... 다 했다 ~~~ !' 였는데 그 담음 또 막힌 부분이 있었습니다.
모두 0으로 초기화 했고.... 미처 눈치 채지 못하셨겠지만(저만 그럴수도...), 구조체에는 int 형 변수가 하나 더 있었다는 겁니다 !
이 때문에 다음은 0으로 채워져서 그 이상은 넘어가지 못했습니다. 첫 번째 인자는 40개 꽉 채울 수 있지만 두 번째 인자는 32개에서 멈추게 되는 겁니다. 그래도 눈을 돌린 곳이 greetuser() 입니다.
greetuser로 넘어가는 값은 위의 파이썬 코드대로 했을 때, A*40+B*26 일 겁니다.(A가 NULL을 찾을 때 까지 값을 입력 받으니까요.)
그리하여 다시 BreakPoint를 걸고 도전 했습니다.
greetuser() 의 맨 마지막 printf(puts로 표시 됨.) 에 BreakPoint 를 걸고 문자열을 전달할 수 있는 최대 크기로 전달 해봤습니다.
사실은 이렇게 쉽게 설명하지만 이 과정 중간에는 엄청난 노가다가 있었습니다. 이것도 계속 잡고 있었어요 왜 안되나...
그 결과 !
제가 전달한 문자열의 길이와 getenv("LANG")에서 얻어진 "HI " 를 합쳐도 ebp를 모두 덮을 수 없었던 겁니다.
그리하야 export LANG="fr" 을 넣어주고 다시 실행시켜 봤습니다.(물론 늘어난 문자열 만큼 조정해서 인자 수를 줄였습니다.)
드디어 ebp를 덮고도 더 쓸 수 있는 공간을 마련했습니다... 이제 공격만 하면 되겠죠? 지금 여기까지는 제 리눅스 서버에서 했기 때문에 위의 과정을 똑같이 하시면 됩니다.(SmashTheStack이 제공하는 서버와 구성이 같다면 그냥 해도되요 ~~)
다행히 전 그냥 같은 방식으로 공격했는데도 먹혔습니다 ^^.
답은, u1zqhnHEzaKmzK09Um 입니다 !
'WarGame > SmashTheStack' 카테고리의 다른 글
[SmashTheStack] Level06_alt 문제 풀이 (0) | 2014.01.03 |
---|---|
[SmashTheStack] Level05 alt 문제 풀이 (0) | 2014.01.02 |
[SmashTheStack] Level5 문제 풀이 (0) | 2014.01.01 |
[SmashTheStack] Level4 문제 풀이 (0) | 2014.01.01 |
[SmashTheStack] Level3 문제 풀이 (0) | 2013.12.31 |
- Total
- Today
- Yesterday
- compliance
- opensource
- Cloud
- 4xx
- .get()
- defaulttheme
- REACT
- fleet manager
- findinglatestversion
- JavaScript
- platform
- scp
- teplate
- 우주와컴퓨터
- CIS
- IAM
- steampipe
- web
- ViaAWSService
- cloudsecurity
- temlate
- 계정정보저장
- conftest policy
- ControlTower
- stateType
- 2xx
- security
- aws
- AWS #CIS
- terraform
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |