lesloli
V2EX  ›  PHP

PHP 绕过验证密码问题

  •  
  •   lesloli · Jun 15, 2017 · 4392 views
    This topic created in 3279 days ago, the information mentioned may be changed or developed.

    请问如果用户不知道密码是 123456 可以输入什么可以绕过验证使其显示密码正确

    Supplement 1  ·  Jun 16, 2017
    呃....不好意思 是我描述不清楚 我的意思是不使用数据库
    比如$a=123456
    用户输入的是$b=$_POST['password']
    有什么办法可以在用户输入 password 的时候 不输入 123456
    就能通过验证
    36 replies    2017-06-16 22:44:12 +08:00
    changwei
        1
    changwei  
       Jun 15, 2017 via Android
    这是哪里的黑客闯关题?
    dongdongkun
        2
    dongdongkun  
       Jun 15, 2017
    1==1
    wkan
        3
    wkan  
       Jun 15, 2017
    ' and 1=1; --
    GoBeyond
        4
    GoBeyond  
       Jun 15, 2017 via Android
    很好,你这句话成功把我强迫症弄出来了,我想了无数遍也没弄懂你说的什么意思
    cjyang1128
        5
    cjyang1128  
       Jun 15, 2017
    1、暴力破解
    2、社工
    3、SQL 注入
    orvice
        6
    orvice  
       Jun 15, 2017   ❤️ 2
    想起以前 phpwind 论坛一个帖子:

    用户等级达到多少可以查看别人的密码?
    lsido
        7
    lsido  
       Jun 15, 2017 via Android
    123456
    chunjie
        8
    chunjie  
       Jun 15, 2017
    重置密码
    johnny23
        9
    johnny23  
       Jun 15, 2017 via iPhone
    我发现好多程序员语言表达都有问题 当然我看懂你的大概意思了 但是你这个问题问的不明确
    coosir
        10
    coosir  
       Jun 15, 2017   ❤️ 3
    我似乎明白为什么 PHP 老是被人黑了,问个问题能不能不拖上 PHP 啊
    vjnjc
        11
    vjnjc  
       Jun 15, 2017
    看完上面的评论,我发现我不是一个人
    Light3
        12
    Light3  
       Jun 15, 2017
    这个问题 跟 PHP 有毛关系..
    mysql and 1=1 可能行 再就是社工把..
    其余的不知道 不搞这个也不想知道..
    skylancer
        13
    skylancer  
       Jun 15, 2017
    虽然我明白卤煮要问的什么,但是这表达能力,真的...

    上面已经有人回答了,就不再打了
    nodeath
        14
    nodeath  
       Jun 15, 2017
    sql 注入
    SakuraKuma
        15
    SakuraKuma  
       Jun 15, 2017
    这一刻,我以为我语文白学了
    keinx
        16
    keinx  
       Jun 15, 2017
    不知道楼主表达什么,不知道是 123456 你输入什么可以绕过密码验证,那就是输入 sql 语句了,但是现在很多都是有防注入的。
    bumz
        17
    bumz  
       Jun 15, 2017   ❤️ 1
    <?php

    // verify.php

    $supplied_password = $_GET['password'];
    $correct_password = '123456';

    if (strcmp($supplied_password, $correct_password) == 0) {
    echo 'Correct';
    } else {
    echo 'Wrong';
    }

    // How to pass:

    access: verify.php?password[]=a
    bumz
        18
    bumz  
       Jun 15, 2017
    U7Q5tLAex2FI0o0g
        19
    U7Q5tLAex2FI0o0g  
       Jun 15, 2017
    问个问题能不能不拖上 PHP +1
    fucker
        20
    fucker  
       Jun 16, 2017
    有很多种方法
    klgd
        21
    klgd  
       Jun 16, 2017
    问个问题能不能不拖上 PHP +1
    lesloli
        22
    lesloli  
    OP
       Jun 16, 2017
    呃....不好意思 是我描述不清楚 我的意思是不使用数据库
    比如$a=123456
    用户输入的是$b=$_POST['password']
    有什么办法可以在用户输入 password 的时候 不输入 123456
    就能通过验证
    Patrick95
        23
    Patrick95  
       Jun 16, 2017
    @lesloli #22

    我还是没看懂你的补充,变量$a 是干嘛用的?
    不输入 123456 ?
    if ($b != $a) {
    login();
    }
    lesloli
        24
    lesloli  
    OP
       Jun 16, 2017
    @Patrick95 变量$a 就是储存密码的 假设密码就是 123456 判断输入的密码是否等于$a 等于就登录成功
    eoo
        25
    eoo  
       Jun 16, 2017
    问个问题能不能不拖上 PHP +1
    Jacklee
        26
    Jacklee  
       Jun 16, 2017
    其实我想问,楼主是碰到了,自己写的代码被人绕过了限制。所以先来问问有哪些绕过的方法,再去比对自己的逻辑漏洞么?是这样的话,直接上代码啊。
    lesloli
        27
    lesloli  
    OP
       Jun 16, 2017
    @Jacklee
    代码很简单啊
    大概就是$a=123456
    $b=$_POST['password']
    if($a==$b)
    {
    echo"登陆成功";
    }
    atroy
        28
    atroy  
       Jun 16, 2017
    感觉语文好差。。。看了 lz 的附加还是没看懂。
    既然不限制是否输入 123456 就能 pass,提交后直接 do_login_success(); 不就好了。。。
    lesloli
        29
    lesloli  
    OP
       Jun 16, 2017
    @atroy 输入 123456 的确可以成功,但前提是输入者不知道密码是什么 这个 123456 是我举的例子,真是的密码肯定特别复杂猜不到的,所以在输入者不知道真实密码的情况下怎么才能通过验证
    nfroot
        30
    nfroot  
       Jun 16, 2017
    目测……

    楼主是想破别人的密码,所以来这里求方法的。
    楼主是想破别人的密码,所以来这里求方法的。
    楼主是想破别人的密码,所以来这里求方法的。

    以 27 楼的回复来看,这还能绕过?那 if($a==$b)应该改为 if($a===$b)

    都 30 回复了,还没人搞明白,你到底是要破别人的密码,还是防别人破自己的密码,还是不知道自己的程序能不能绕过密码。

    30 回复了啊,能说明白吗?
    lesloli
        31
    lesloli  
    OP
       Jun 16, 2017
    @nfroot 我不知道你从哪得出 “楼主是想破别人的密码,所以来这里求方法的。”这个结论的
    我说了 27 楼的代码就是我程序的代码 我这么验证被别人破了,所以来问别人是怎么破我的密码的
    atroy
        32
    atroy  
       Jun 16, 2017
    @lesloli
    我不知道你的具体的代码原形。但给你个栗子吃一口。

    test.php?password=0

    <?php
    $a = 'a12B3.4c56';
    $b = $_GET['password'];
    if( $a == (int)$b){
    echo"登陆成功";
    }
    nfroot
        33
    nfroot  
       Jun 16, 2017
    @lesloli 我给你写了解决方案啊,如果还能破解,那就是 BUG 了,赶紧提交给 PHP 官方吧。

    但是你也要把对方实际提交的字符串记录下来(会 PHP 存个字符串做记录不难吧),要不然你发到哪里都是没人会信你的。

    我在上面提到的解决办法就是“以 27 楼的回复来看,这还能绕过?那 if($a==$b)应该改为 if($a===$b) ”

    就事论事,上面一大堆人都不明白你到底要问什么,你应该学习一下《提问的智慧》,而我也给了你解决方案,你只评价我的态度,却不评价我的帮助,我表示遗憾。
    helica
        34
    helica  
       Jun 16, 2017 via iPhone
    有很多思路呀。sql 注入,php 弱类型,逻辑漏洞。具体请看 ctf 的 web 题目
    junbguistar
        35
    junbguistar  
       Jun 16, 2017
    楼主可能是问 又没什么方法可以绕过 if 我想。。可能编译器出错?
    cxbig
        36
    cxbig  
       Jun 16, 2017
    前后端输入验证、Salt、ORM、失败多次帐号锁定。有这么几个基本的功能设计,PHP 层面绕过的可能性极低。

    同意楼上观点,楼主中文表达能力堪忧。学编程恐怕困难重重。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1426 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 83ms · UTC 16:45 · PVG 00:45 · LAX 09:45 · JFK 12:45
    ♥ Do have faith in what you're doing.