• ctfshow-web9


    web 9

    首先把环境下载下来,然后,界面是这样子

     给了你用户名了,没有密码,惯性思维使我认为是sql注入,那我就试着做了一下,可是都没有回显,不知道是啥问题。或许是过滤了?还是怎么样。反正就是回显不了。

    那我就扫描一下目录吧,拿出我们的dirsearch扫它一手: python dirsearch.py -u 网址 -e php ,利用这个命令就可以扫描了。

     发现了,一个robots.txt文件,访问一手。

     发现index.phps,确定源码泄露。访问index.phps下载源码

     1 <?php
     2         $flag="";
     3         $password=$_POST['password'];
     4         if(strlen($password)>10){
     5             die("password error");
     6         }
     7         $sql="select * from user where username ='admin' and password ='".md5($password,true)."'";
     8         $result=mysqli_query($con,$sql);
     9             if(mysqli_num_rows($result)>0){
    10                     while($row=mysqli_fetch_assoc($result)){
    11                          echo "登陆成功<br>";
    12                          echo $flag;
    13                      }
    14             }
    15     ?>

    这便是源码。大家可以发现,第七行的这段代码: $sql="select * from user where username ='admin' and password ='".md5($password,true)."'"; sql查询,我们看查询条件,用户名是admin,密码是利用md5加密后的结果,

    语法:md5(string,raw)

    参数 描述
    string 必需。规定要计算的字符串。
    raw

    可选。规定:

      TRUE - 原始 16 字符二进制格式

      FALSE - 默认。32 字符十六进制数

    将密码转换成16进制的hex值以后,再将其转换成字符串后包含'or’xxxx

    这样,条件就成了username ='admin' and password =‘ ’or 'xxxxx'。对语句进行了闭合,其实就是拼接成了万能密码。

    看了大佬的博客,得来了字符:ffifdyop

    输入此字符串即可获得flag

     参考文章:

    md5类型绕过

  • 相关阅读:
    守卫者的挑战
    黑魔法师之门
    noip2015 普及组
    noip2015 提高组day1、day2
    40026118素数的个数
    高精度模板
    经典背包系列问题
    修篱笆
    [LintCode] Linked List Cycle
    [LintCode] Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/awsole/p/14384729.html
Copyright © 2020-2023  润新知