-
Windows Buffer OverFlowHack/Pwnable 2015. 8. 12. 03:36
#include <stdio.h>
#include <string.h>
void true1() {
printf("True");
}
void false1() {
printf("false1");
}
int main() {
char pw[10];
printf("Input Password: ");
gets(pw);
if(strcmp(pw,"buf") == 0)
{
true1();
}
else {
false1();
}
return 0;
}
매우 기초적인 소스이다.
올리디버거를 켜보자
A를 20개를 넣으면 EIP가 정상적으로 변조된다.
우리는 올바른 패스워드를 입력하지않고 RET를덮어 TRUE를 출력할것이다.
우선 TRUE함수의 주소는 401000이다.
우리는 00401000으로 덮어주면되는데, 아스키 코드표를 참조하되 HEX를 보아야한다. 또, 리틀엔디언으로 집어넣어주어야한다.
00401000이아닌 00104000을 넣어야하는데, 아스키코드표를 참고해서 16바이트를 채운후 나머지 4바이트를 조작해보자.
정상적으로 ret가 덮여 TRUE가 호출되게된다.
'Hack > Pwnable' 카테고리의 다른 글
gdb 1줄로 사용하기 (0) 2015.09.02 Parallels LPE Vulnarability (0) 2015.08.30 Windows BOF 관련문서 (0) 2015.08.06 DBI - Pin tool (0) 2015.08.04 PinTool 설치 (0) 2015.07.24