PC리버싱/기타

버퍼오버플로우에대해서 예제

Lamed_Dhhd 2020. 5. 28. 12:13
반응형


#include <stdio.h>
#include <windows.h>



char password[] = "Dhhd";
int check_password()
{
char buffer[5];
int flag = 0;
printf("password:");
gets(buffer);
if (strcmp(buffer, password) == 0) flag = 1;
return flag;
}
int main(int argc, char* argv[])
{
if (check_password())
{
printf("\n=====================");
printf("\n       Corret        ");
printf("\n=====================");
}
else
{
printf("\n      UnCorret       ");
}
return 0;
}

소스코드 by x64dbg 책

overflow.zip
0.04MB

 

이렇게 오버플로우하게되면 GS때문에안되기떄문에

https://dhhd-goldmilk777.tistory.com/149

 

visual studio 보안해제하기

[GS (Stack Canary/Cookie) 해제법] 프로젝트 속성 -> C/C++ -> 코드 생성 -> 보안 검사 -> 보안 검사 사용 안 함(/GS-) 으로 변경. 함수 프롤로그 이후 스택에 버퍼 할당 전에 랜덤한 값을 Push해 두고, 함수 에..

dhhd-goldmilk777.tistory.com

이걸통해 무력화하자

아무래도 보안때문인것같아서 Dev c++로해보자

13자리가되면 버퍼오버플로우가 일어난다

스택영역을벗어나서 이렇게된다

이게 위에 flag부분까지 건드려서 1이된것

반응형