V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lesloli
V2EX  ›  PHP

PHP 绕过验证密码问题

  •  
  •   lesloli · 2017-06-15 12:19:57 +08:00 · 3730 次点击
    这是一个创建于 2720 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    上面已经有人回答了,就不再打了
    nodeath
        14
    nodeath  
       2017-06-15 14:32:51 +08:00
    sql 注入
    SakuraKuma
        15
    SakuraKuma  
       2017-06-15 14:50:58 +08:00
    这一刻,我以为我语文白学了
    keinx
        16
    keinx  
       2017-06-15 14:55:18 +08:00
    不知道楼主表达什么,不知道是 123456 你输入什么可以绕过密码验证,那就是输入 sql 语句了,但是现在很多都是有防注入的。
    bumz
        17
    bumz  
       2017-06-15 18:36:32 +08:00   ❤️ 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  
       2017-06-15 18:38:30 +08:00
    littleylv
        19
    littleylv  
       2017-06-15 18:40:31 +08:00
    问个问题能不能不拖上 PHP +1
    fucker
        20
    fucker  
       2017-06-16 08:25:30 +08:00
    有很多种方法
    klgd
        21
    klgd  
       2017-06-16 08:36:57 +08:00
    问个问题能不能不拖上 PHP +1
    lesloli
        22
    lesloli  
    OP
       2017-06-16 09:56:20 +08:00
    呃....不好意思 是我描述不清楚 我的意思是不使用数据库
    比如$a=123456
    用户输入的是$b=$_POST['password']
    有什么办法可以在用户输入 password 的时候 不输入 123456
    就能通过验证
    Patrick95
        23
    Patrick95  
       2017-06-16 10:37:43 +08:00
    @lesloli #22

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

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

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

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

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

    test.php?password=0

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

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

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

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

    同意楼上观点,楼主中文表达能力堪忧。学编程恐怕困难重重。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2583 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:44 · PVG 23:44 · LAX 07:44 · JFK 10:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.