我们进行验证密码的时候最常用的方法是 “=” 列入
SELECT * FROM admin WHERE name = 'admin' and password = "123456"
假设现在用 < 或者 > 在 password 字段进行判断会出现很奇怪的结果。 https://i.imgur.com/BMugQCK.png
1 不行,大于 2 就可以了。小弟不知道他是怎么判断的。一直没有搞懂。 这是我的数据库 Imgur
求大神帮忙
![]() |
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 天前
纯属探讨,只想弄明白是怎么判断的,不用于业务,想法是脑子一热想到的。就觉得很奇怪而已
|
![]() |
6
crazytudou 39 天前
0.0,sql 本来就是字符串比对大小
|
![]() |
7
claysec 39 天前 via iPhone
@crazytudou 主要这个还牵扯到一个 ctf 的题目,说能跑出数据
|
![]() |
8
chendy 39 天前
字符串本来就能比较,能排序啊…
|
![]() |
10
claysec 39 天前 via iPhone
那如果是字符串和字符串进行比较。那大于小于号是怎么进行对比的呢?
|
![]() |
11
noctisnkt 39 天前 ♥ 1
mysql 的字符串比较是如果长度相等,则比较相同位置的字符。长度不等,转成 ASCII 码比较
|
![]() |
13
akira 39 天前
字符串比较 一般编程书都会讲
|
14
jwenjian 39 天前 via iPhone
Ascii
|
15
augustpluscn 39 天前
3 楼正解吧。。。。
|
20
laminux29 38 天前
楼主,我给你两个字符串:
"屎好吃" "屎不好吃" 你用大于小于来比较一个试试? |
![]() |
23
a7217107 38 天前
跟字符串长度无关,比较的是字符串的编码,可能是 Unicode (因为有中文),从首位开始比较,相同则比较下一位,不同则返回对应的 true or false
|
![]() |
24
silenceeeee 38 天前
google mysql collate
|