Shellcode in C program -
the link http://hackoftheday.securitytube.net/2013/04/demystifying-execve-shellcode-stack.html highlights way write execve shellcode.
#include<stdio.h> #include<string.h> unsigned char code[] = "\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80"; main() { printf("shellcode length: %d\n", strlen(code)); int (*ret)() = (int(*)())code; ret(); }
what line int (*ret)() = (int(*)())code;
do?
int (*ret)() = (int(*)())code; ~~~~~~~~~~~~ ~~~~~~~~~~~~~~ 1 2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3
it defines
ret
pointer function has no parameter()
, returnsint
. so,()
indicates definition of parameters of function.it's casting
code
pointer function has no parameter()
, returnsint
.casts
code
function , assignsret
. after can callret();
.
unsigned char code[] = "\x31\xc0\x50\x68\x6e\x2f\...
it sequence of machine instructions represented hex values. injected code function.
Comments
Post a Comment