System-hacking/๐Ÿ“–

    [ASC ์Šคํ„ฐ๋””] 9์ฃผ์ฐจ - Return to Library(RTL)

    [ASC ์Šคํ„ฐ๋””] 9์ฃผ์ฐจ - Return to Library(RTL)

    ๐Ÿ‘‰ ์ง€๋‚œ ์ฐจ์‹œ 2022.08.19 - [System-hacking/๐Ÿ“–] - [ASC ์Šคํ„ฐ๋””] 8์ฃผ์ฐจ - Stack Canary + Out Of Boundary 1. Return To Libc ( RTL ) ์‚ด์ง ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค ! 1.1. ํ•จ์ˆ˜ํ˜ธ์ถœ ๊ทœ์•ฝ( Calling Convention ) : ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ์•ฝ์† ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ทœ์•ฝ์€ ์ธ์ž ์ „๋‹ฌ ๋ฐฉ๋ฒ•, ์ธ์ž ์ „๋‹ฌ ์ˆœ์„œ, Stack Frame์„ ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๊ทธ ์ข…๋ฅ˜๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค. ํ•จ์ˆ˜ํ˜ธ์ถœ๊ทœ์•ฝ ์ฐธ๊ณ  > ํ•จ์ˆ˜ํ˜ธ์ถœ๊ทœ์•ฝ 1. ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ทœ์•ฝ ๊ฐœ์š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ทœ์•ฝ(Calling Convention)์ด๋ž€, ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ์•ฝ์†์ด๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ทœ์•ฝ์€ ์ธ์ž ์ „๋‹ฌ ๋ฐฉ๋ฒ•, ์ธ์ž ์ „๋‹ฌ ์ˆœ์„œ, Stack Frame์„ ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๊ทธ ์ข…..

    [ASC ์Šคํ„ฐ๋””] 8์ฃผ์ฐจ - Stack Canary + Out Of Boundary

    [ASC ์Šคํ„ฐ๋””] 8์ฃผ์ฐจ - Stack Canary + Out Of Boundary

    ๐Ÿ‘‰ ์ง€๋‚œ ์ฐจ์‹œ 2022.07.30 - [System-hacking/๐Ÿ“–] - [ASC ์Šคํ„ฐ๋””] 7์ฃผ์ฐจ - Stack Buffer Overflow ๋ฌธ์ œ ํ’€์ด, Integer Overflow ( 2์ฃผ์น˜ ๋ฐ€๋ ค์„œ ๋ถ€๋žด๋ถ€๋žด ์“ฐ๋Š”์ค‘... ) 1. Stack Canary ์Šคํƒ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•œ ๊ธฐ๋ฒ•์ด๋‹ค. ( SFP์™€ RET ๊ฐ’์ด ๋ณ€์กฐ ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค. ) Buffer์™€ SFP ์‚ฌ์ด์— ๋žœ๋คํ•œ 4 or 8 ๋ฐ”์ดํŠธ์˜ Canary ๊ฐ’์ด ์‚ฝ์ž…๋œ๋‹ค. ํ•จ์ˆ˜ ์ง„์ž…์‹œ ์นด๋‚˜๋ฆฌ ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ , ํ•จ์ˆ˜ ์ข…๋ฃŒ์‹œ ์นด๋‚˜๋ฆฌ ๊ฐ’์ด ๋ณ€์กฐ ๋๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ( ์นด๋‚˜๋ฆฌ ๊ฐ’์ด ๋ณ€์กฐ๋๋‹ค๋ฉด __stack_check_fail ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋œ๋‹ค. ) ์ปดํŒŒ์ผ ๋ฐฉ๋ฒ• : ์นด๋‚˜๋ฆฌ ํ•ด์ œ : -fno-stack-protector ์นด๋‚˜๋ฆฌ ์„ค์ • : -..

    [ASC ์Šคํ„ฐ๋””] 7์ฃผ์ฐจ - Stack Buffer Overflow ๋ฌธ์ œ ํ’€์ด, Integer Overflow

    [ASC ์Šคํ„ฐ๋””] 7์ฃผ์ฐจ - Stack Buffer Overflow ๋ฌธ์ œ ํ’€์ด, Integer Overflow

    ๐Ÿ‘‰ ์ง€๋‚œ ์ฐจ์‹œ 2022.07.23 - [System-hacking/๐Ÿ“–] - [ASC ์Šคํ„ฐ๋””] 6์ฃผ์ฐจ - ํ•จ์ˆ˜์˜ ์Šคํƒ ํ”„๋ ˆ์ž„, ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ๊ธฐ๋ฒ•, Stack Buffer Overflow 1. Stack Buffer Overflow ์‹ค์Šต ๋ฌธ์ œ ํ’€์ด ๋ฌธ์ œ ํ’€์ด1 : overwrite_ret64 ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๋ฒ„ํผ์˜ ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€Œ๊ณ  ์žˆ๋‹ค => ASLR ์ทจ์•ฝํ•œ ๋ถ€๋ถ„ : scanf๋กœ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋ฐ ํฌ๊ธฐ ์ œํ•œ์„ ํ•˜์ง€ ์•Š๊ณ  ์žˆ๋‹ค. * ํ’€์ด ์ˆœ์„œ 1. buf์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. - 2. size๋ฅผ int์˜ 4๋ฐ”์ดํŠธ๋งŒํผ ์ž…๋ ฅํ•œ๋‹ค. 3. Input์—์„œ ๋ฒ„ํผ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ์ด์šฉํ•ด ์‰˜์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค. pwntools์„ ์ด์šฉํ•ด์„œ ์ต์Šคํ”Œ๋กœ์ž‡ ์ฝ”๋“œ๋ฅผ ์งœ๋ณด์ž. 1. buf์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. p.recvuntil(b'buf address ..

    [ASC ์Šคํ„ฐ๋””] 6์ฃผ์ฐจ - ํ•จ์ˆ˜์˜ ์Šคํƒ ํ”„๋ ˆ์ž„, ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ๊ธฐ๋ฒ•, Stack Buffer Overflow

    [ASC ์Šคํ„ฐ๋””] 6์ฃผ์ฐจ - ํ•จ์ˆ˜์˜ ์Šคํƒ ํ”„๋ ˆ์ž„, ๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ๊ธฐ๋ฒ•, Stack Buffer Overflow

    ๐Ÿ‘‰ ์ง€๋‚œ ์ฐจ์‹œ 2022.07.07 - [System-hacking/๐Ÿ“–] - [ASC ์Šคํ„ฐ๋””] 5์ฃผ์ฐจ - ์—ฐ์Šต๋ฌธ์ œ ํ’€์ด, GDB, IDA, Pwntools ์‚ฌ์šฉ๋ฒ• 1. ํ•จ์ˆ˜์˜ ์Šคํƒ ํ”„๋ ˆ์ž„ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๊ณผ์ • > ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉํ•  ์ธ์ž๋ฅผ ์Šคํƒ์— ๋„ฃ๊ณ  ํ•จ์ˆ˜ ์‹œ์ž‘์ง€์ ์œผ๋กœ ์ ํ”„ > ํ•จ์ˆ˜ ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์Šคํƒ ํ”„๋ ˆ์ž„ ์„ค์ • > ํ•จ์ˆ˜ ๋‚ด์šฉ ์‹คํ–‰ > ์‹คํ–‰์„ ๋งˆ์นœ ํ›„, ํ˜ธ์ถœ ์ง€์ ์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ ์œ„ํ•ด ์Šคํƒ ๋ณต์› #include int add(int a, int b){ return a+b; } int main(){ int result = add(2,3); printf("2+3 = %d\n", result); return 0; } Buffer SFP RET addํ•จ์ˆ˜ ํ˜ธ์ถœ ์ „ ์Šคํƒ ํ”„๋ ˆ์ž„ Buffer SFP RET a b Buffer S..

    [ASC ์Šคํ„ฐ๋””] 5์ฃผ์ฐจ - ์—ฐ์Šต๋ฌธ์ œ ํ’€์ด, GDB, IDA, Pwntools ์‚ฌ์šฉ๋ฒ•

    [ASC ์Šคํ„ฐ๋””] 5์ฃผ์ฐจ - ์—ฐ์Šต๋ฌธ์ œ ํ’€์ด, GDB, IDA, Pwntools ์‚ฌ์šฉ๋ฒ•

    ๐Ÿ‘‰ ์ง€๋‚œ ์ฐจ์‹œ 2022.06.27 - [System-hacking/๐Ÿ“–] - [ASC ์Šคํ„ฐ๋””] 4์ฃผ์ฐจ - ๋ ˆ์ง€์Šคํ„ฐ, ์–ด์…ˆ๋ธ”๋ฆฌ, ์—ฐ์Šต๋ฌธ์ œ, GDB ์‚ฌ์šฉ๋ฒ• 1. ์—ฐ์Šต๋ฌธ์ œ ํ’€์ด & ๋ณต์Šต ๊ฒฐ๊ณผ ํ™•์ธ ๋ฐฉ๋ฒ• => nasm, gdb sudo apt-get install nasm vi ex1.asm nasm -f elf64 ex1.asm -o ex1.o && ld ex1.o -o ex1.elf ./ex1.elf pwndbg, Pwngdb ์‚ฌ์šฉ ๋ฐฉ๋ฒ•: git clone ํ•ด์„œ ๋‹ค์šด ๋ฐ›๋Š”๋‹ค => pwndbg/ ๋“ค์–ด๊ฐ€์„œ ./setup.sh ํ•ด์ค€๋‹ค => .gdbinit ํŒŒ์ผ ์ˆ˜์ •ํ•ด์ค€๋‹ค. => gdb ์‹คํ–‰ํ•ด๋ณด๊ธฐ source ~/pwndbg/gdbinit.py source ~/Pwngdb/pwngdb.py source ~/Pwngd..

    [ASC ์Šคํ„ฐ๋””] 4์ฃผ์ฐจ - ๋ ˆ์ง€์Šคํ„ฐ, ์–ด์…ˆ๋ธ”๋ฆฌ, ์—ฐ์Šต๋ฌธ์ œ, GDB ์‚ฌ์šฉ๋ฒ•

    [ASC ์Šคํ„ฐ๋””] 4์ฃผ์ฐจ - ๋ ˆ์ง€์Šคํ„ฐ, ์–ด์…ˆ๋ธ”๋ฆฌ, ์—ฐ์Šต๋ฌธ์ œ, GDB ์‚ฌ์šฉ๋ฒ•

    ๐Ÿ‘‰ ์ง€๋‚œ ์ฐจ์‹œ 2022.06.19 - [System-hacking/๐Ÿ“–] - [ASC ์Šคํ„ฐ๋””] 3์ฃผ์ฐจ - ๊ธฐ์ดˆ์ด๋ก , ํ™˜๊ฒฝ์„ธํŒ…, ๋ฉ”๋ชจ๋ฆฌ๊ตฌ์กฐ ( x86-64 ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜ ) 1. ๋ ˆ์ง€์Šคํ„ฐ(Register) CPU๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•  ๋•Œ ์ด์šฉํ•˜๋Š” ๋ณด๊ด€์†Œ์ด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜๋ณด๋‹ค ๋น ๋ฅด๋‹ค. 1.1. 32๋น„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ โœจ E๋กœ ์‹œ์ž‘ํ•œ๋‹ค. ex) 32bit EAX > 16bit AX > 8bit AH + 8bit AL - ๋ฐ์ดํ„ฐ ๋ ˆ์ง€์Šคํ„ฐ (1) EAX(Accumulator) ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๊ณ  ํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋‹ด๋Š”๋‹ค. (2) ECX(Counter) ์ฃผ๋กœ ์นด์šดํŒ…ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ( for๋ฌธ์˜ i ๊ฐ™์ด ) (3) EBX(Base) ์ฃผ๋กœ ์ฃผ์†Œ์˜ ๊ธฐ๋ณธ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. (4) EDX(Data) ์ฃผ๋กœ ..