1. flag 값을 전역변수(주소를 알고있는) 에 저장하는 루틴이 있음 2. 주어진 함수나 ROP를 이용해 write할 수 있는 방법이 없음(출력 -> leak 불가) 3. __fortify_fail() 을 이용하여 환경변수에서 파일 이름을 가져오는 경우 사용할 수 있는 canary leak 방법이다. int __cdecl main(int argc, const char **argv, const char **envp) { char buf[256]; // [esp+4h] [ebp-10Ch] BYREF unsigned int canary; // [esp+104h] [ebp-Ch] canary = __readgsdword(0x14u); read_flag(); read(0, buf, 512); return 0; ..