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

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

  •  
  •   claysec · 39 天前 · 1455 次点击
    这是一个创建于 39 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    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
        1
    haiyang416   39 天前
    那你为什么要用 < 和 > 来比较字符串呢?
        2
    claysec   39 天前
    @haiyang416 就好奇心。尝试了一下,结果发现逻辑新世界(ε=ε=ε=┏(゜ロ゜;)┛
        3
    littleylv   39 天前   ♥ 1
    然而最常用的方法并不是 name = 'admin' and password = "123456"

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

    "屎好吃"

    "屎不好吃"

    你用大于小于来比较一个试试?
        21
    claysec   38 天前 via iPhone
    @laminux29 那你想要我表达什么呢?
        22
    claysec   38 天前 via iPhone
    @taogen 11 楼是答案。已经弄明白了(滑稽
        23
    a7217107   38 天前
    跟字符串长度无关,比较的是字符串的编码,可能是 Unicode (因为有中文),从首位开始比较,相同则比较下一位,不同则返回对应的 true or false
        24
    silenceeeee   38 天前
    google mysql collate
        25
    claysec   38 天前
    @a7217107 比的是 ascii 码。#16 已经很清楚啦
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   976 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 27ms · UTC 23:11 · PVG 07:11 · LAX 15:11 · JFK 18:11
    ♥ Do have faith in what you're doing.