Maison  >  Article  >  interface Web  >  Solution de vérification locale révolutionnaire JS

Solution de vérification locale révolutionnaire JS

小云云
小云云original
2018-03-13 15:02:502509parcourir

Une sorte de vérification js que nous rencontrons souvent lors du téléchargement de vulnérabilités est assez ennuyeuse. La méthode permettant de juger si la vérification js est activée sur un site Web ne peut pas être jugée par sa vitesse de jugement, car la vérification js est utilisée pour une vérification locale sur le client. . , donc si vous téléchargez un format de fichier incorrect, son jugement montrera bientôt que le type de fichier que vous avez téléchargé est incorrect, nous pourrons alors juger que le site Web utilise la vérification js.

Code de démonstration du contournement de la vérification js :

<?php
/**
 * Created by cracer
 * Date: 15-10-7
 * Time: 下午1:19
 * Name: upload1.php
 * cracer:http://www.cracer.com/
 */
//文件上传漏洞演示脚本之js验证
$uploaddir = &#39;uploads/&#39;;
if (isset($_POST[&#39;submit&#39;])) {
 if (file_exists($uploaddir)) {
 if (move_uploaded_file($_FILES[&#39;upfile&#39;][&#39;tmp_name&#39;], $uploaddir . &#39;/&#39; . $_FILES[&#39;upfile&#39;][&#39;name&#39;])) {
 echo &#39;文件上传成功,保存于:&#39; . $uploaddir . $_FILES[&#39;upfile&#39;][&#39;name&#39;] . "\n";
 }
 } else {
 exit($uploaddir . &#39;文件夹不存在,请手工创建!&#39;);
 }
 //print_r($_FILES);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=gbk"/>
 <meta http-equiv="content-language" content="zh-CN"/>
 <title>文件上传漏洞演示脚本--JS验证实例</title>
 <script type="text/javascript">
 function checkFile() {
 var file = document.getElementsByName(&#39;upfile&#39;)[0].value;
 if (file == null || file == "") {
 alert("你还没有选择任何文件,不能上传!");
 return false;
 }
 //定义允许上传的文件类型
 var allow_ext = ".jpg|.jpeg|.png|.gif|.bmp|";
 //提取上传文件的类型
 var ext_name = file.substring(file.lastIndexOf("."));
 //alert(ext_name);
 //alert(ext_name + "|");
 //判断上传文件类型是否允许上传
 if (allow_ext.indexOf(ext_name + "|") == -1) {
 var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
 alert(errMsg);
 return false;
 }
 }
 </script>
<body>
<h3>文件上传漏洞演示脚本--JS验证实例</h3>
<form action="" method="post" enctype="multipart/form-data" name="upload" onsubmit="return checkFile()">
 <input type="hidden" name="MAX_FILE_SIZE" value="Solution de vérification locale révolutionnaire JS04800"/>
 请选择要上传的文件:<input type="file" name="upfile"/>
 <input type="submit" name="submit" value="上传"/>
</form>
</body>
</html>

Remarque : Il est préférable que le chemin du dossier et le nom du fichier soient en anglais, sinon une erreur pourrait être signalée .

Solution de vérification locale révolutionnaire JS

Enregistrez simplement le code sous upload.php, puis créez un dossier de téléchargement dans le même répertoire pour stocker les fichiers téléchargés.

Méthode de contournement de la vérification JS

La vérification JS est la meilleure à contourner. Il semble y avoir un dicton selon lequel la vérification basée sur le client n'est pas sûre. Nous avons ici une variété de méthodes de contournement.

Comment déterminer si le téléchargement de fichiers est basé sur la vérification JS côté client ?

Il existe de nombreuses méthodes, telles que la visualisation directe du fichier source du site Web, l'utilisation d'un outil de capture de paquets pour vérifier si le client a soumis un paquet de données au serveur. Sinon, utilisez la vérification js et téléchargez un fichier sur. aléatoire, et voir le résultat de retour.

Solution de vérification locale révolutionnaire JS

Comme le montre l'image ci-dessus, la vérification JS affichera une invite directement après que vous ayez soumis le fichier téléchargé et mis fin à la soumission du fichier au serveur. La méthode de contournement est la suivante :

A. Nous pouvons directement supprimer le code lié à la vérification du fichier téléchargé dans l'événement onsubmit dans le code.

Solution de vérification locale révolutionnaire JS

ok nous avons utilisé Firebug pour le supprimer

Solution de vérification locale révolutionnaire JS

Solution de vérification locale révolutionnaire JS

B. Modifiez directement les extensions de fichiers autorisées à être téléchargées dans le code JS de téléchargement de fichiers par les extensions de fichiers que vous souhaitez télécharger.

Solution de vérification locale révolutionnaire JS

Solution de vérification locale révolutionnaire JS

ok Les deux méthodes suivantes sont relativement simples à utiliser, je ne les démontrerai pas ici. Si vous avez des questions, juste. demandez-moi sur QQ

C. Utilisez simplement le formulaire de soumission local et apportez les modifications correspondantes.

D. Utilisez des outils proxy tels que burpsuite ou fiddle pour soumettre. Modifiez d'abord le fichier local en jpg, interceptez-le lors du téléchargement, puis modifiez l'extension du fichier en asp.

Les 4 méthodes ci-dessus peuvent être utilisées librement par tout le monde, et elles peuvent toutes contourner la vérification JS locale.

Recommandations associées :

Résumé recommandé des articles connexes sur la vérification js

Expression régulière du numéro de téléphone et du mobile de vérification js numéro de téléphone Formule

js pour vérifier si les informations de la carte d'identité sont légales

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn