์ง๋๋ฒ ๋ง๋ค์๋ shellcode์์ 0x00์ ์ ๊ฑฐํด ๋ด ์๋ค.
ํฌ๊ฒ ๋๊ฐ์ง์ ๋ถ๋ถ์์ ๋๋ฐ์ดํธ๊ฐ ํฌํจ๋๋ค์.
- mov {reg}, {value}
- mov {reg}, 0
์ฒซ๋ฒ์งธ ๋ฌธ์ ๋ ์ ๋ ฅ๋๋ ๊ฐ์ ๋ ์ง์คํฐ์ ํฌ๊ธฐ์ ๋ง์ถ๊ธฐ ์ํด ๋ ๋ฐ์ดํธ๋ฅผ ํฌํจ์ํค๋ฉด์ ๋ฐ์ํฉ๋๋ค.
eax๋ ์ง์คํฐ๋ก ์๋ฅผ ๋ค์ด๋ณด์๋ฉด,
mov eax, 4 : eax(32bit = 4byte)์ ์ ๋ฌํ๊ธฐ ์ํด์ , ๊ฐ์ด 0x4๊ฐ ์๋ 0x00000004๊ฐ ๋๋๊ฒ๋๋ค.
์ด๋ฅผ ๋ฐ๋ก์ก๊ธฐ์ํด ์ต์ํ์ ๊ณต๊ฐ์ ์ด์ฉํ๋๋ฐ, ์ด๋ฌํ ๊ฒฝ์ฐ์๋ al(1byte)์ ์ด์ฉํฉ๋๋ค.
eax๋ ์ง์คํฐ ์์์๋ ๊ตฌ์ญ์ด ๋๋์ด์ ธ ์์ต๋๋ค.
31 16 8 0
ah | al |
์ฌ๊ธฐ์ ๋ช ์ฌํด์ผํ ๋ถ๋ถ์ด ์์ต๋๋ค.
eax์ ์ด๋ ํ data๊ฐ ๋ค์ด์๋์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์ด๊ธฐํ๋ฅผ ํ๋ฒ ํด์ฃผ์ด์ผ ํฉ๋๋ค.
<์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ชจ์ต>
eax : 0x00000004
31 16 8 0
ah | al | |
0000 0000 0000 0000 | 0000 0000 | 0000 0100 |
<์ด์ ๊ฐ์ ๊ณ ๋ คํ์ง ๋ชปํ์ ๋>
eax : 0xbffffe04 ...??
31 16 8 0
ah | al | |
1011 1111 1111 1111 | 1111 1110 | 0000 0100 |
eax๋ฅผ 0์ผ๋ก ๋ง๋ค์ด์ค ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
์ด๋ ๋๋ฒ์งธ ๋ฌธ์ ์ ๊ณผ ๊ฐ์ด ์ดํด๋ณด๋๋ก ํ๊ณ
์ฐ์ , al์ ์ด์ฉํ์ฌ ๋ค์ ์ฝ๋ฉ์ ํด๋ณด์ฃ
0์ ์ ๋ฌํ๋ ๊ณผ์ ์์ ๊ธฐ๊ณ์ด ์ 0x00์ ํ์์ ์ธ ๋ฐ์ดํฐ์ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด 0์ ์ฌ์ฉํ์ง ์๊ณ ๋ ์ง์คํฐ๋ฅผ 0์ผ๋ก ๋ง๋ค์ด์ค ๋ฐฉ๋ฒ์ด ์์๊น์?
xor์ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค.
xor eax, eax ์ด๋ฐ์์ผ๋ก ์ฌ์ฉํ๋ค๋ฉด eax์๋ 0์ด ๋จ์์๊ฒ ๋ฉ๋๋ค.
xor์ ์ถ๊ฐํ์ฌ ์ฝ๋๋ฅผ ๋ง๋ฌด๋ฆฌ ํด ๋ด ์๋ค.
๊น~๋ํ๊ฒ ๋๋ฐ์ดํธ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค.
์ต์ข shellcode๋ฅผ ์ง์ ์ฌ์ฉํด ๋ณผ๊น์? (lob gate ๋ฌธ์ ๋ก ํ ์คํธ ํด๋ณด์์ต๋๋ค)
์ฑ๊ณต์ ์ผ๋ก helloworld!๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
๋ค์ ํฌ์คํ ๋ถํฐ๋ ๋ณธ๊ฒฉ์ ์ผ๋ก shell์ ์คํ์ํค๋ ์์ฝ๋๋ฅผ ์ ์ํด ๋ณด๋ ค๊ณ ํฉ๋๋ค.
to be continued..
'system hacking ๐ฑ > shellocde' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
shellcode (0x2f ์์ ๊ธฐ) (0) | 2020.12.19 |
---|---|
shellcode (4) (0) | 2020.12.19 |
shellcode (2) (0) | 2020.12.18 |
shellcode (1) (0) | 2020.12.17 |