코드 출처 : 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
'System Hacking' 카테고리의 다른 글
main 함수가 호출, 종료되는 과정(.init_array&.fini_array) (0) | 2021.06.03 |
---|---|
Double Staged FSB (0) | 2021.05.30 |
Sigreturn-oriented programming (SROP) (0) | 2021.05.10 |
Stack Pivoting (스택 피봇팅) (0) | 2021.05.03 |
RTC (Return to CSU) (수정) (0) | 2021.04.19 |