求解 Mysql 这样的字段是怎么判断的呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
claysec
V2EX    程序员

求解 Mysql 这样的字段是怎么判断的呢

  •  
  •   claysec
    boku7 2019-10-30 17:51:45 +08:00 2902 次点击
    这是一个创建于 2226 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们进行验证密码的时候最常用的方法是 “=” 列入

    SELECT * FROM admin WHERE name = 'admin' and password = "123456" 

    假设现在用 < 或者 > 在 password 字段进行判断会出现很奇怪的结果。 https://i.imgur.com/BMugQCK.png

    1 不行,大于 2 就可以了。小弟不知道他是怎么判断的。一直没有搞懂。 这是我的数据库 Imgur

    求大神帮忙

    25 条回复    2019-10-31 13:31:25 +08:00
    haiyang416
        1
    haiyang416  
       2019-10-30 17:53:53 +08:00
    那你为什么要用 < 和 > 来比较字符串呢?
    claysec
        2
    claysec  
    OP
       2019-10-30 17:56:24 +08:00
    @haiyang416 就好奇心。尝试了一下,结果发现逻辑新世界(ε=ε=ε=┏(ロ;)┛
    U7Q5tLAex2FI0o0g
        3
    U7Q5tLAex2FI0o0g  
       2019-10-30 17:58:39 +08:00   1
    然而最常用的方法并不是 name = 'admin' and password = "123456"

    1、SELECT password FROM admin WHERE name = 'admin'
    2、password_verify('123456 表单填的', '数据库取出来的加密过的')
    claysec
        4
    claysec  
    OP
       2019-10-30 17:59:36 +08:00
    纯属探讨,只想弄明白是怎么判断的,不用于业务,想法是脑子一热想到的。就觉得很奇怪而已
    claysec
        5
    claysec  
    OP
       2019-10-30 18:00:13 +08:00
    @littleylv 假设一下,哈哈哈哈
    crazytudou
        6
    crazytudou  
       2019-10-30 18:04:24 +08:00
    0.0,sql 本来就是字符串比对大小
    claysec
        7
    claysec  
    OP
       2019-10-30 18:06:21 +08:00 via iPhone
    @crazytudou 主要这个还牵扯到一个 ctf 的题目,说能跑出数据
    chendy
        8
    chendy  
       2019-10-30 18:21:33 +08:00
    字符串本来就能比较,能排序啊…
    claysec
        9
    claysec  
    OP
       2019-10-30 18:22:33 +08:00 via iPhone
    @chendy emmmm。我知道能比较。但是我关心的是怎么比较的
    claysec
        10
    claysec  
    OP
       2019-10-30 18:25:45 +08:00 via iPhone
    那如果是字符串和字符串进行比较。那大于小于号是怎么进行对比的呢?
    noctisnkt
        11
    noctisnkt  
       2019-10-30 18:33:22 +08:00   1
    mysql 的字符串比较是如果长度相等,则比较相同位置的字符。长度不等,转成 ASCII 码比较
    claysec
        12
    claysec  
    OP
       2019-10-30 18:36:43 +08:00 via iPhone
    @noctisnkt 感谢我去试试
    akira
        13
    akira  
       2019-10-30 18:40:20 +08:00
    字符串比较 一般编程书都会讲
    jwenjian
        14
    jwenjian  
       2019-10-30 19:40:31 +08:00 via iPhone
    Ascii
    augustpluscn
        15
    augustpluscn  
       2019-10-30 19:49:14 +08:00
    3 楼正解吧。。。。
    kosmosr
        16
    kosmosr  
       2019-10-30 20:04:51 +08:00
    kosmosr
        17
    kosmosr  
       2019-10-30 20:05:08 +08:00   1
    @kosmosr 比的是首位的 ascii 码
    claysec
        18
    claysec  
    OP
       2019-10-30 22:01:50 +08:00 via iPhone
    @kosmosr 谢谢大佬
    taogen
        19
    taogen  
       2019-10-31 00:51:15 +08:00 via Android
    @kosmosr 不一定是 ASCII 编码,varchar 和 char 支持中文,我猜应该是 Unicode 编码。
    laminux29
        20
    laminux29  
       2019-10-31 08:58:29 +08:00
    楼主,我给你两个字符串:

    "屎好吃"

    "屎不好吃"

    你用大于小于来比较一个试试?
    claysec
        21
    claysec  
    OP
       2019-10-31 09:33:8 +08:00 via iPhone
    @laminux29 那你想要我表达什么呢?
    claysec
        22
    claysec  
    OP
       2019-10-31 09:34:42 +08:00 via iPhone
    @taogen 11 楼是答案。已经弄明白了(滑稽
    a7217107
        23
    a7217107  
       2019-10-31 09:41:31 +08:00
    跟字符串长度无关,比较的是字符串的编码,可能是 Unicode (因为有中文),从首位开始比较,相同则比较下一位,不同则返回对应的 true or false
    silenceeeee
        24
    silenceeeee  
       2019-10-31 09:47:43 +08:00
    google mysql collate
    claysec
        25
    claysec  
    OP
       2019-10-31 13:31:25 +08:00
    @a7217107 比的是 ascii 码。#16 已经很清楚啦
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     932 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:50 PVG 05:50 LAX 13:50 JFK 16:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86