"select role from `user` where username ='".$username."'"; $res = $conn ->query($sql); if($res->num_rows>0){ echo "$username is ".$res->fetch_assoc()['role']; }else{ die("Don't have this user!"); } } function login($username,$passwd){ global $conn; global $flag; $username = trim(strtolower($username)); $passwd = trim(strtolower($passwd)); if($username == 'admin'){ die("you can't login this as admin!"); } $sql = "select * from `user` where username='".$conn->escape_string($username)."' and passwd='".$conn->escape_string($passwd)."'"; $res = $conn ->query($sql); if($res->num_rows>0){ if($res->fetch_assoc()['role'] === 'admin') exit($flag); }else{ echo "sorry,username or passwd error!"; } } function source(){ highlight_file(__FILE__); } $username = isset($_POST['username'])?filter($_POST['username']):""; $passwd = isset($_POST['passwd'])?filter($_POST['passwd']):""; $action = isset($_GET['action'])?filter($_GET['action']):"source"; switch($action){ case "source": source(); break ; case "login" : login($username,$passwd);break; case "show" : show($username);break; } 我们留意到filter()函数
- $filter = "/ |\*|#|;|,|is|union|like|regexp|for|and|or|file|--|\||`|&|".urldecode('%09')."|".urldecode("%0a")."|".urldecode("%0b")."|".urldecode('%0c')."|".urldecode('%0d')."|".urldecode('%a0')."/i";
这里看起来过滤的比较多,个中and,or还有\&,|都被过滤了,这个时刻就可以应用false进行盲注。
可以在show函数应用萌芽的时刻注入,
- username = "admin'^!(mid((passwd)from(-{pos}))='{passwd}')='1"
这里官方给出的就是应用异或,其拭魅这里并不须要’admin‘只如果一串字符串就可以

异或会使字符串都转为浮点型,都变为了0,因为0=0^0 -> 1^0 -> 1当然对于这个题并不必定应用这个,直接朝长进步字符串作比较就可以,然则这里只是供给一种姿势,因为mysql的灵活,其花样也比较多还有就是构造的payload比较简短,例如'+'、'^'、'/4#如许只有三个字符便可以绕过登录,简单粗暴,还有就是类似的文┞仿不多,很多开辟人员轻易忽视这些细节。
推荐阅读
云端模糊测试挖洞实例
一、简介Fuzzing(模糊测试)是一种用于辨认软件bug以及马脚的办法。就今朝的成长趋势来说Fuzzing正向着云端迈进,相较于传统Fuzzing方法,云端Fuzzing使得模糊测试速度加快也加倍灵活。在本>>>详细阅读
本文标题:MySQL False注入及技巧总结
地址:http://www.17bianji.com/lsqh/35045.html
1/2 1