canary 2

[System Hacking] ssp_001

Description Stack Smashing Protector ๊ธฐ๋ฒ•์„ ์šฐํšŒํ•˜์—ฌ ์ต์Šคํ”Œ๋กœ์ž‡ํ•ด ์…ธ์„ ํš๋“ํ•œ ํ›„, "flag" ํŒŒ์ผ์„ ์ฝ์œผ์„ธ์š”. ์†Œ์Šค์ฝ”๋“œ: ssp_001.c #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } void get_shell() { system("/bin/sh"); } void print_box(unsigned char *box, int id..

[Stack Canary] Stack Buffer Overflow๋กœ๋ถ€ํ„ฐ Return address๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ

๋ชฉ์  ์Šคํƒ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๊ณต๊ฒฉ์œผ๋กœ๋ถ€ํ„ฐ return address๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์ž‘๋™ ์›๋ฆฌ ํ•จ์ˆ˜์˜ ํ”„๋กค๋กœ๊ทธ์—์„œ: ์Šคํƒ ๋ฒ„ํผ์™€ ๋ฐ˜ํ™˜ ์ฃผ์†Œ ์‚ฌ์ด์— ์ž„์˜์˜ ๊ฐ’ (= ์ฆ‰ Canary)์„ ์‚ฝ์ž… ๊ทธ ํ›„, ํ•จ์ˆ˜์˜ ์—ํ•„๋กœ๊ทธ์—์„œ: ํ•ด๋‹น ๊ฐ’์˜ ๋ณ€์กฐ๋ฅผ ํ™•์ธ ๋งŒ์•ฝ Canary ๊ฐ’์˜ ๋ณ€์กฐ๊ฐ€ ํ™•์ธ๋˜๋ฉด: ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ•์ œ ์ข…๋ฃŒ๋จ ๊ณต๊ฒฉ์ž๊ฐ€ ์Šคํƒ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ํ†ตํ•ด return address๋ฅผ overwriteํ•˜๋Š” ๊ฒฝ์šฐ, ๋งŒ์•ฝ return address ์ด์ „์— canary๊ฐ€ ๋งˆ๋ จ๋ผ ์žˆ๋‹ค๋ฉด, return address overwrite ์ด์ „์— ํ•„์—ฐ์ ์œผ๋กœ canary๊ฐ€ ๋จผ์ € overwrite ๋˜๊ฒ ์ง€์š”. ์ด๋•Œ, ๊ณต๊ฒฉ์ž๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Canary ๊ฐ’์„ ๋ชจ๋ฅด๋ฏ€๋กœ (๊ณต๊ฒฉ์ž๊ฐ€ ์ด ๊ฐ’์„ ์•Œ์•„๋‚ด๋Š” ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๋„ ์žˆ๋Š”๋ฐ ๋‹ค๋ฅธ ๊ธ€์—์„œ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค), ๊ณต๊ฒฉ ..