ํ๋ก์ ํธ (24) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [์์คํ ํดํน] ๋ฒํผ ์ค๋ฒํ๋ก์ฐ ์ทจ์ฝ์ ํดํน ์ค์ต (2) 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 ํด๋น ์ ํ๋ธ ์์์ ๋ณด๋ฉด์ ์ค์ตํด๋ณด๋๋ก ํ๋ค. #expo.. [์์คํ ํดํน] ๋ฒํผ ์ค๋ฒํ๋ก์ฐ ์ทจ์ฝ์ ํดํน ์ค์ต (1) https://youtu.be/ZRHncXwedZ8 ๋ฒํผ ์ค๋ฒํ๋ก์ฐ ์ทจ์ฝ์ ํดํน ์ค์ต์ ์ ํ๋ธ๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถํ๋ค. #nano overflow.c ํ๋์ ์์ค์ฝ๋๋ฅผ ์์ฑํ๋ค. #include int main(int argc, char *argv[]){ char buf[16]; if(argc!=2) return -1; strcpy(buf,argv[1]); return 0; } argc๋ ํ๋ก๊ทธ๋จ ์คํ์ ์ ๋ฌ๋๋ ์ธ์๋ฅผ ๋ปํ๋ค. ์๋ฅผ ๋ค์ด ํ๋ก๊ทธ๋จ ์คํ ์ ./oveflow 6 3 ์ด๋ฐ์์ผ๋ก ํ๋ฉด ./overflow๊ฐ 0๋ฒ์งธ ์ธ์, 6์ด 1๋ฒ์งธ ์ธ์, 3์ด 2๋ฒ์งธ ์ธ์๊ฐ ๋๋ค. ์ฌ๊ธฐ์ strcpy๊ฐ ์ทจ์ฝํ๋ค. ์ธ์๊ฐ์ ๊ฐ์๋ฅผ ์ธ์ง์๊ธฐ ๋๋ฌธ์ด๋ค. argv[1]์ ๊ฐ์ด buf์ ๋ฒ์๋ฅผ ๋์ด์ ํฌ๊ธฐ๋ผ๋ strcpy๋ฅผ.. [์์คํ ํดํน] ์ ์ฝ๋ ์ ์ ๋ฐ ์ต์คํ๋ก์ ์ค์ต ์ฐธ๊ณ : https://youtu.be/eJWlg-VoCBg ์ ํ๋ธ๋ฅผ ๋ณด๋ฉด์, ์ ์ฝ๋๋ฅผ ์ ์ํ๊ณ , ์ต์คํ๋ก์์ ์ค์ตํด๋ณด๋ ค๊ณ ํ๋ค. ์ ์ฝ๋ ๋ฐ ์ต์คํ๋ก์์ด๋ ์ฉ์ด๋ ๋ณด์๊ธฐ์ฌ ์ค๋น์ ๋ง์ด ๋ค์ด๋ดค๋ค. ์ ์ฝ๋๋ ๋ช ๋ น ์ ๊ณต๊ฒฉ ์ฝ๋๋ฅผ ์ด์ฉํด ์ทจ์ฝ์ ์ ๋ซ๊ณ ์๋ฒ ์ปดํจํฐ๋ฅผ ์ ์ดํ ์ ์๋๋ก ํ๋ ์ฝ๋๋ฅผ ๋ปํ๋ค. ์๋์ฐ์์ ์ ์ฝ๋๋ ์ฐ๋ฆฌ๊ฐ ํํ ์ฐ๋ cmd๋ฅผ ๋ปํ๋ค. ๊ตฌ๊ธ์ ์์ ์ ์ด์์ฒด์ ๋ฅผ ์ ๊ณ ์ ์ฝ๋๋ฅผ ๊ฒ์ํ๋ฉด ๋ค์ํ ์ ์ฝ๋๋ค์ด ๊ฒ์๋๋ค. https://shell-storm.org/shellcode/files/shellcode-806.html Linux/x86-64 - Execute /bin/sh - 27 bytes shell-storm.org ํ์ฌ๋ ์ด ์ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ค. $su root ro.. [์์คํ ํดํน] ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ณ ํผ๋ผ๋ฏธ๋ ๋ง๋ค๊ธฐ (2) 2023.01.18 - [ํ๋ก์ ํธ/์์คํ ํดํน] - [์์คํ ํดํน] ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ณ ํผ๋ผ๋ฏธ๋ ๋ง๋ค๊ธฐ (1) [์์คํ ํดํน] ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ณ ํผ๋ผ๋ฏธ๋ ๋ง๋ค๊ธฐ (1) https://youtu.be/FFFr5GnelJI ์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ์ด์ฉํด์ ๋ณ ํผ๋ผ๋ฏธ๋๋ฅผ ๋ง๋ค์ด๋ณธ๋ค. $nano pyramid.s ๋ณ ํผ๋ผ๋ฏธ๋๋ฅผ ๋ง๋ค ์์ค์ฝ๋ ํ์ผ์ ์์ฑํด์ค๋ค. section .data STAR db '*' EMPTY db 0x0a section .text global _start _start: dangsdangs.tistory.com ์ด ๊ธ์ ์ด์ด์ ๋ณ ํผ๋ผ๋ฏธ๋๋ฅผ ์์ฑํด๋ณธ๋ค. https://youtu.be/2wFN9BG3wWw ํด๋น ์ ํ๋ธ๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถํ๋ค. #include int main(void){ int n=7,i,j; f.. [์์คํ ํดํน] ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ณ ํผ๋ผ๋ฏธ๋ ๋ง๋ค๊ธฐ (1) https://youtu.be/FFFr5GnelJI ์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ์ด์ฉํด์ ๋ณ ํผ๋ผ๋ฏธ๋๋ฅผ ๋ง๋ค์ด๋ณธ๋ค. $nano pyramid.s ๋ณ ํผ๋ผ๋ฏธ๋๋ฅผ ๋ง๋ค ์์ค์ฝ๋ ํ์ผ์ ์์ฑํด์ค๋ค. section .data STAR db '*' EMPTY db 0x0a section .text global _start _start: mov rax,1 ;WRITE ์์คํ ์ฝ ์ค์ mov rdi,1 ;๊ธฐ๋ณธ ์ถ๋ ฅ ๋ชจ๋ mov rdx,1 ;์ถ๋ ฅ ๊ธธ์ด ์ค์ mov r10,0 ;์ธ๋ฑ์ค (๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉ)์ mov r9,[rsp+16] ;์ ๋ ฅ๋ ๋ฌธ์์ด ์ฐพ๊ธฐ cmp r9,0 ;์ ๋ ฅ์ด ์๋ ๊ฒฝ์ฐ je _done ;ํ๋ก๊ทธ๋จ ์ข ๋ฃ mov cl,[r9] ;์ค์ง ํ ๋ฐ์ดํธ๋ง cl์ ์ ์ฅ movzx r9,cl ;๋ฌธ์ ํํ์ cl์ r9์ ์ ์ฅ sub .. [์์คํ ํดํน] ๋๋ฒ๊น https://youtu.be/SVw0VnG5UDM ์ ํ๋ธ๋ฅผ ๋ณด๋ฉด์ ๋๋ฒ๊น ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณธ๋ค. starce, pwndbg ํ์ฉ๋ฒ์ ์์๋ณด์. ๋๋ฒ๊น ์ ์ด๋ฏธ ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ์ด ์์ ๋, ์ญ์ผ๋ก ์ถ์ ํด์ ์ด๋ป๊ฒ ํ๋ก๊ทธ๋จ์ด ๋์ํ๋์ง ํ์ ํ๋ ๊ฒ์ ๋งํ๋ค. $sudo apt-get install strace sudo ๋ช ๋ น์ด๋ฅผ ํตํด strace๋ฅผ ์ค์นํ๋ค. strace ๋ช ๋ น์ด๋ ์ ๋ณด๋ณด์๊ธฐ์ฌ ์ค๊ธฐ ์ค๋นํ ๋๋ ๋ง์ด ๋ดค์๋ค. ์น์ง ์ผ๋ง๋๋ค๊ณ ๋ฒ์จ ๊ฐ๋ฌผ๊ฐ๋ฌผํ์ง๋ง.. $strace -ifx ./echo 2023.01.13 - [ํ๋ก์ ํธ/์์คํ ํดํน] - [์์คํ ํดํน] ์ด์ ๋ธ๋ฆฌ์ด ์์ฝ ํ๋ก๊ทธ๋จ ์์ฑ [์์คํ ํดํน] ์ด์ ๋ธ๋ฆฌ์ด ์์ฝ ํ๋ก๊ทธ๋จ ์์ฑ https://youtu.be/Z3QuFbsnqMc ์ค๋๋ ์ ํ๋ธ๋ฅผ ๋ณด.. [์์คํ ํดํน] ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ฐ๋ณต๋ฌธ ๊ตฌํ https://youtu.be/aUCzNzBO6Hg ์ค๋์ ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ฐ๋ณต๋ฌธ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ ํ๋ธ๋ฅผ ๋ณด๋ฉด์ ๊ณต๋ถํ๋ ค๊ณ ํ๋ค. $nano loop.s loop๋ผ๋ ์ด๋ฆ์ ์ด์ ๋ธ๋ฆฌ ์์ค์ฝ๋๋ฅผ nano๋ก ์์ฑํ๋ค. section .data msg db "A" section .text global _start _start: mov rax,1 mov rdi,1 mov rsi, msg mov rdx,1 syscall ์ถ๋ ฅ์ ํ๋ ์์คํ ์ฝ์ ํ๊ธฐ ์ํด ์ด์ ์๊ฐ ๊น์ง ๋ฐฐ์ ๋ mov rax,1์ ํ์ฌ ์ถ๋ ฅํ๋ค. ์ด์ ๊ฐ์ด ํ์ดํํ ํ ์ ์ฅํด์ ํ๋ฒ ์ถ๋ ฅํด๋ณธ๋ค. ์์ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ ์คํ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ณ๊ฒฝํ๋ค. ๊ทธ๋ฌ๋ฉด A๊ฐ ์ถ๋ ฅ๋๋ฉด์ ์ธ๊ทธ๋ฉํ ์ด์ ์ค๋ฅ๊ฐ ๋ฌ๋ค. ์ด๋ ์ต์ข ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํด์ฃผ์ง ์์.. [์์คํ ํดํน] ์ด์ ๋ธ๋ฆฌ์ด ๊ธฐ๋ณธ ๋ฌธ๋ฒ https://youtu.be/YiXc3Mi3Jtc ์ค๋์ ์ด์ ๋ธ๋ฆฌ์ด ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ๊ณต๋ถํด๋ณธ๋ค. MOV A, B : B์ ๊ฐ์ A์ ๋ฃ๋๋ค. ex) MOV EAX, 100 : EAX์ 100์ ๋ฃ๋๋ค. LEA A, B : A์ ๊ฐ์ B์ ๊ฐ์ผ๋ก ๋ณต์ฌํ๋ค. ex)LEA EAX, [EAX+1000] : EAX์ 1000์ ๋ํ ๊ฐ์ ๋ค์ EAX์ ์ฝ์ MOV์ ๋ค๋ฅด๊ฒ ์ฐ์ฐ์ด ํฌํจ ๊ฐ๋ฅํ๋ค. JMP A : A์ ์์น๋ก ๊ฑด๋ ๋ฐ์ด ์ฝ๋๋ฅผ ์คํํ๋ค. JA, JB, JE ๋ฑ ์ ํ ์กฐ๊ฑด ๋ช ๋ น์ ์ด์ฉํด ๋น๊ต ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ ํํ ์ ์๋ค. CALL: ํจ์ ํธ์ถ ํ ์๋ ์์น๋ก ๋์์ฌ ๋ ์ฌ์ฉํ๋ค. JMP์ ๋ค๋ฅด๊ฒ ์คํ ๋ค ๋๋๋ฉด RET์ ๊ฐ์ ์ ์ฅํ๊ณ ๋ค์ ์๋ ์์น๋ก ๋์๊ฐ๋ค. NOP : ์๋ฌด ์์ ๋ ํ์ง ์๋ .. ์ด์ 1 2 3 ๋ค์