티스토리 뷰
드디어 2번 입니다 ! 접속하고 바로 문제 살펴보죠 !
문제가 두 개가 있습니다... 왜 두 개인지는 모르겠지만 둘 다 풀어봅시다 !
level02.c 부터 살펴봅시다 ~
사실 이 문제를 먼저 한 이유는 FTZ 6번에서 signal에 대해서 공부 자세히 했어서... 쉬워 보여서 했습니다 !
시그널에 대해서 궁금하시면 클릭 !
아무튼 SIGFPE라는 걸 일으키면 catcher라는 함수를 실행해준다는 것을 알 수 있습니다 ~
SIGFPE가 뭔가 검색해봤습니다... 뭘 알아야 풀던가 하죠 ㅎㅎ..
SIGFPE <- 여기서 Ctrl + f 로 sigfpe 검색하시면 내려가서 볼 수 있어요 ~
그냥 간단하게 정수오버플로우나 정수를 0으로 나누거나 등등인데요...
소스를 보시면 아시겠지만... 두 번째 인자로 0이 들어갈 수가 없네요... ㅠㅠ.. 그래서 택한 방법이 정수오버플로우 입니다 !
먼저 답부터 공개하고 풀이갑니다 ~ 답은 Ib3F7i7FqjziuDOBKi 네요 ^^.
이제 풀이입니다 ! 왜 저렇게하는데 오버플로우가 되고 abs를 우회할 수 있는지요.
일단 abs의 구현 원리를 아셔야 되는데... 절대값반환... 간단하게 많이 짜보셨죠 ?
대충 위와 같이 되어있습니다. -1 즉, FFFFFFFF 을 곱하는거죠.(and 연산)
그럼 -2147483648을 연산해볼까요 ?
변환이 안되네요... 왜 ! 일까요 ??? 간단한 연상르 해보시면 됩니다 ㅎㅎ.
-2147483648 = 1000 0000 0000 0000 0000 0000 0000 0000 이고,
-1 = 1111 1111 1111 1111 1111 1111 1111 1111 입니다. 뭔가 감이 오시나요 ?
and 연산을 해도 값이 똑같습니다 !!!! 이러한 원리로 level2의 abs를 피해갈 수 있고요 두 번째로 오는 수를 -1로 하면 곱하면서 2147483648 이 양수로 표현되야 하는데 이걸 16진수로 표현하면 80000000이 되야 합니다만... 이 수는 -2147483648 과 같습니다. 고로 정수 오버플로우 된 것 이죠 !
흠... 이해가 되셨을지 모르겠네요... 아무튼 다음엔 Level02_alt 를 풀어 봅시다 ~
'WarGame > SmashTheStack' 카테고리의 다른 글
[SmashTheStack] Level4 문제 풀이 (0) | 2014.01.01 |
---|---|
[SmashTheStack] Level3 문제 풀이 (0) | 2013.12.31 |
[SmashTheStack] Level2_alt 문제 풀이 (0) | 2013.12.30 |
[SmashTheStack] Level1 문제 풀이 (0) | 2013.12.27 |
[SmashTheStack] SmashTheStack 시작하기 (0) | 2013.12.27 |
- Total
- Today
- Yesterday
- ControlTower
- JavaScript
- 2xx
- compliance
- IAM
- Cloud
- web
- defaulttheme
- 우주와컴퓨터
- steampipe
- security
- fleet manager
- conftest policy
- findinglatestversion
- aws
- terraform
- scp
- CIS
- platform
- 계정정보저장
- REACT
- opensource
- 4xx
- temlate
- .get()
- AWS #CIS
- stateType
- cloudsecurity
- ViaAWSService
- teplate
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |