Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C - The %x format specifier

I have a small question. I know that the %x format specifier can be used to read values from the stack in a format string attack.

I found the following code:

%08x%08x%08x%08x 

What does the 08 mean? What is it doing exactly? Thanks :)

like image 421
Matthew Avatar asked Feb 27 '13 09:02

Matthew


1 Answers

Break-down:

  • 8 says that you want to show 8 digits
  • 0 that you want to prefix with 0's instead of just blank spaces
  • x that you want to print in lower-case hexadecimal.

Quick example (thanks to Grijesh Chauhan):

#include <stdio.h> int main() {     int data = 29;     printf("%x\n", data);    // just print data     printf("%0x\n", data);   // just print data ('0' on its own has no effect)     printf("%8x\n", data);   // print in 8 width and pad with blank spaces     printf("%08x\n", data);  // print in 8 width and pad with 0's      return 0; } 

Output:

1d 1d       1d 0000001d 

Also see http://www.cplusplus.com/reference/cstdio/printf/ for reference.

like image 163
sonicwave Avatar answered Oct 03 '22 10:10

sonicwave