nemo의 이야기

쉘 코드 본문

Information security/System security

쉘 코드

nemojjong 2017. 9. 3. 16:24

쉘 코드 : 쉘을 실행하는 코드 즉 기계어로 작성

 

execve를 이용해서 execve("/bin/sh,NULL") 코드를 어셈블리어로 작성해보자

 

 

execve에 인자를 esp를 기준으로 삼는다.

 

 

 



 

argv esp-8
0 esp-4 
/bin esp
'//sh'


 

이런 형식으로 edx는 0을 넣기위해 xor로 초기화시켜준다.

 

4byte씩 맞추기 위해 /sh => //sh로 바꿔준다.


나머지 0으로 32비트를 8비트로 들어가려면 0으로 되므로 al을 사용해서 크기에 맞게 설정해줘야 된다.

 

 

 

shellcode를 실행시켜서 sh를 따냈으면 성공한 것이다.

 

이제 이 소스에 기계어를 확인해서 쉘코드를 작성할 것이다.

  

 

 


#> objdump -d shellcode를 사용하여 위와 같은 기계어 코드를 확인할 수 있을 것이다.


숫자들은 문자로 쓰기 위해 \x를 사용해서 넣어보자


"\x31\xd2\x31\xd2\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe0\x52\x50\x89\xc3\x31

\xc0\xb0\x0b\x89\xe1\xcd\x80"


29바이트에 쉘코드이다




Comments