System Hacking
integer overflow 2
jir4vvit
2021. 5. 19. 17:06
코드 출처 : https://lactea.kr/entry/pwnablexyz-l33t-ness-write-up
pwnable.xyz 문제 풀다가 integer overflow 개념 조금 더 잡아야할 필요성을 느꼈다.
지난번에 비슷한 주제로 글 쓴 적 있는데 이 포스팅이 더 실용적인 것 같다.
signed int | -2^31 ~ 2^31-1 | –2147483648 ~ 2147483647 |
unsigned int | 0 ~ 2^32-1 | 0 ~ 4294967295 |
#include <stdio.h>
#include <stdlib.h>
int main() {
char a[16];
read(0, a, 0x10);
int b = atoi(a);
printf("%d\n",b);
}
signed int이다.
# 입력
# 출력
2147483647 # int 최대 범위 0x7fff ffff
2147483647
2147483648 # int 최대 범위 + 1 0x8000 0000
-2147483648
4294967296 # (int 최대 범위 + 1) * 2 0x1 0000 0000
0
4294967295 # 0xffff ffff
-1