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

integer overflow