elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Resuelto] Tengo un problema descargando un .txt de un fuente.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Resuelto] Tengo un problema descargando un .txt de un fuente.  (Leído 4,215 veces)
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
[Resuelto] Tengo un problema descargando un .txt de un fuente.
« en: 8 Septiembre 2019, 07:53 am »

http://stringmanolo.byethost12.com/an.php

Tengo un problemón.

Lo que intento hacer:
Tengo en la variable $SC el SourceCode de google.es
Estoy mostrando el source en la web e intento implementar un link para que el usuario se lo descarge.
Se me ocurrio meterlo en un archivo externo hacer un echo y descargar el archivo como .txt
El archivo se descarga correctamente.

Lo que sucede: Al abrir el archivo dentro me encuento el código fuente del aes.js
En el hosting que utilizo, muy de vez en cuando aparece este código fuente de aes.js y otras veces el mío.
Código
  1. /*
  2.  * aes.js: implements AES - Advanced Encryption Standard
  3.  * from the SlowAES project, http://code.google.com/p/slowaes/
  4.  *
  5.  * Copyright (c) 2008 Josh Davis ( http://www.josh-davis.org ),
  6.  * Mark Percival ( http://mpercival.com ),
  7.  *
  8.  * Ported from C code written by Laurent Haan ( http://www.progressive-coding.com )
  9.  *
  10.  * Licensed under the Apache License, Version 2.0
  11.  * http://www.apache.org/licenses/
  12.  */
  13.  
  14. var slowAES = {
  15. /*
  16. * START AES SECTION
  17. */
  18. aes:{
  19. // structure of valid key sizes
  20. keySize:{
  21. SIZE_128:16,
  22. SIZE_192:24,
  23. SIZE_256:32
  24. },
  25.  
  26. // Rijndael S-box
  27. sbox:[
  28. 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
  29. 0xca, 0x8...

Código
  1. <?php
  2. header("Content-type: application/octet-stream");
  3. header("Content-Disposition: attachment; filename=\"source-code.txt\"");
  4. echo $SC;
  5. ?>

Código
  1. <?php
  2. echo "$SC" ;
  3. ?>
  4. </p>
  5. </div>
  6. <a href="php/download.php">Download Source Code!</a>
  7. <p>
  8. <h4>Links</h4>
  9. <?php




Mod: Obligatorio el uso de etiquetas GeSHi.


« Última modificación: 24 Septiembre 2019, 12:09 pm por #!drvy » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.042



Ver Perfil
Re: Tengo un problema descargando un .txt de un fuente.
« Respuesta #1 en: 8 Septiembre 2019, 12:55 pm »

Saludos,

- Revisando mi apartado Network de mi Chrome Developer Tools, veo que algunas veces se cambia tu página an.php por otra que pone una cookie y redirige de nuevo a tu página an.php:

Código
  1. <html>
  2.  <body>
  3.    <script type="text/javascript" src="/aes.js"></script>
  4.    <script>
  5.      function toNumbers(d) {
  6.        var e = [];
  7.        d.replace(/(..)/g, function(d) {
  8.          e.push(parseInt(d, 16))
  9.        });
  10.        return e
  11.      }
  12.      function toHex() {
  13.        for (var d = [], d = 1 == arguments.length && arguments[0].constructor == Array ? arguments[0] : arguments, e = "", f = 0; f < d.length; f++)
  14.          e += (16 > d[f] ? "0" : "") + d[f].toString(16);
  15.        return e.toLowerCase()
  16.      }
  17.      var a = toNumbers("f655ba9d09a102d4968c63579db590b4")
  18.        , b = toNumbers("98344c2eee86c4994890592585b49f80")
  19.        , c = toNumbers("b7c84c9bff7ec4d94f982be3132cba49");
  20.      document.cookie = "__test=" + toHex(slowAES.decrypt(c, 2, a, b)) + "; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/";
  21.      location.href = "http://stringmanolo.byethost12.com/an.php?i=3";
  22.    </script>
  23.    <noscript>This site requires javascript to work, please enable javascript in your browser or use a browser with javascript support</noscript>
  24.  </body>
  25. </html>
  26.  

- Luego, este mismo se inserta como contenido de prism.js, no se si lo insertas tu manualmente o como se hará... pero al final me da error la mayoría de las veces y no se formatea el código fuente de google.es

- Supongo que ese redireccionamiento lo pone tu Hosting


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Tengo un problema descargando un .txt de un fuente.
« Respuesta #2 en: 8 Septiembre 2019, 13:42 pm »

Exacto, lo pone el hosting.

Tiene el src="/aes.js" y me lo imprime. Alguna idea de como podría hacer esa descarga?

Se encuentra el "/aes.js" en el prism.js? El prism.js si que lo metí yo para hacer highlighting del código fuente, el prism.js son unos 20k de tamaño. El aes.js son 33k. El prism.js tiene un módulo por ahí para hacer la descarga, copiar código al portapapeles pero no me está resultando muy realiable. Ando un browser patata para asegurarme que programo cosas compatibles con casi todo lo usual.

No tengo ni idea de que otra forma podría hacer la descarga. Ya probé de varias y todas pecan de lo mismo. Si sabeis de alguna dpm, si no estrenaré la api de pastebin que la tengo pendiente, a ver si "mágicamente" no envio el aes.js en lugar del contenido de la variable.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Tengo un problema descargando un .txt de un fuente.
« Respuesta #3 en: 8 Septiembre 2019, 17:10 pm »

Tu mismo lo has dicho que es tu hosting, no tiene nada que ver prism.js. Es una medida de seguridad de byethost.
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Tengo un problema descargando un .txt de un fuente.
« Respuesta #4 en: 8 Septiembre 2019, 17:34 pm »

Tu mismo lo has dicho que es tu hosting, no tiene nada que ver prism.js. Es una medida de seguridad de byethost.
Se os ocurre como saltársela? Algún workaround? Llevo unas cuantas horas intentándolo de varias maneras y no lo consigo de ninguna.
En la Api de pastebin parace que ponen límite de lo que puedes subir con cuenta gratuita. Igual alguna otra Api?
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Tengo un problema descargando un .txt de un fuente.
« Respuesta #5 en: 8 Septiembre 2019, 17:54 pm »

Si puedes establecer la cookie antes de hacer la petición debería funcionar. Pero para eso vas a necesitar precargar la URL, extraer el secreto, llave e IV (las variables, a, b, c) y usar el slowaes para construir la cookie.

Tal y como lo hace ese script.

O puedes simplemente buscarte otro host que no tenga una protección así.
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Tengo un problema descargando un .txt de un fuente.
« Respuesta #6 en: 8 Septiembre 2019, 19:29 pm »

Creo que ya conseguí hacerlo fucionar. Aún tengo que testearlo para asegurarme que no se vuelve a descargar el aes.js. Básicamente scrapeo desde la página de download.php antes de setear el archivo como .txt lo que obliga que sea la página precargada antes de que se pueda cargar. O eso creo, llevo horas probando de distintas maneras. Ahora tengo el problema de que scrapeo 2 veces el mismo sitio, no creo que influya en nada a menos que el sitio sea muy pesado. Prefiero no hablar antes de tiempo que la lata que me está dando algo tan sencillo... Con suerte me quito lo de las descargas de encima.
http://stringmanolo.byethost12.com/au.php
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.042



Ver Perfil
Re: Tengo un problema descargando un .txt de un fuente.
« Respuesta #7 en: 8 Septiembre 2019, 19:46 pm »

- Yo lo he implementado guardando la variable en la sesión, y aparte usado prettify y beautify para que se vea mejor el código que muestra la web:

Código
  1. <script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script>
  2. <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.10.2/beautify.js"></script>
  3. <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.10.2/beautify-css.js"></script>
  4. <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.10.2/beautify-html.js"></script>
  5.  
  6. <a href="download.php">Descargar</a>
  7. <pre class="prettyprint" id="srcode">
  8.  <?php
  9.    session_start();
  10.    $content = file_get_contents("https://www.google.es/");
  11.    $_SESSION["content"] = $content;
  12.    echo str_replace( "<", "&lt;", utf8_encode($content) );
  13.  ?>
  14. </pre>
  15.  
  16. <script>
  17.  srcode = document.getElementById("srcode");
  18.  srcode.innerText = html_beautify(srcode.innerText, {indent_size: 2});
  19. </script>

download.php
Código
  1. <?php
  2.  header('Content-Disposition: attachment; filename="google.txt"');
  3.  echo $_SESSION['content'];
  4. ?>
En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: Tengo un problema descargando un .txt de un fuente.
« Respuesta #8 en: 8 Septiembre 2019, 19:59 pm »

No conocía esas libs. Beautify formatea el código? Voy a utilizarlo entonces. Vi imágenes del pretify y no me llama mucho, supongo que es cuestión de gustos. También tengo que revisar el Geshi que usa el foro, igual con css encaja guay en mi sitio.
Lo más importante es la funcionalidad que le quiero implementar al extraer todos los elememtos interesantes del código y organizarlos. Pico y pala.  :-\
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Tengo un problema descargando un .txt de un fuente.
« Respuesta #9 en: 8 Septiembre 2019, 20:49 pm »

- Yo lo he implementado guardando la variable en la sesión, y aparte usado prettify y beautify para que se vea mejor el código que muestra la web:

Código
  1. <script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script>
  2. <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.10.2/beautify.js"></script>
  3. <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.10.2/beautify-css.js"></script>
  4. <script src="https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.10.2/beautify-html.js"></script>
  5.  
  6. <a href="download.php">Descargar</a>
  7. <pre class="prettyprint" id="srcode">
  8.  <?php
  9.    session_start();
  10.    $content = file_get_contents("https://www.google.es/");
  11.    $_SESSION["content"] = $content;
  12.    echo str_replace( "<", "&lt;", utf8_encode($content) );
  13.  ?>
  14. </pre>
  15.  
  16. <script>
  17.  srcode = document.getElementById("srcode");
  18.  srcode.innerText = html_beautify(srcode.innerText, {indent_size: 2});
  19. </script>

download.php
Código
  1. <?php
  2.  header('Content-Disposition: attachment; filename="google.txt"');
  3.  echo $_SESSION['content'];
  4. ?>

Hasta donde yo tengo entendido de esta forma debería ser el mismo problema. Byethost usa este mecanismo:



https://kyprizel.github.io/testcookie-nginx-module/

Lo que significa que si la petición no pasa del challenge por el reverse proxy, nunca llega a pegar a el servidor web. Si lo pones en una sesión o si lo pones en una cookie, etc, no debería importar, porque la petición nunca llega al servidor en el que estás trabajando hasta que pasas el challenge. La pregunta es, que tan a menudo ocurre el challenge. La cookie expira hasta el 2037 así que no estoy seguro cuando se vuelve a presentar el challenge.

Si ya estás imprimiendo todo el código del sitio en esa página, puedes simplemente recoger el código del div y guardarlo en un archivo.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines