SQL注入
今天遇见了一个SQL注入未曾关注的问题,虽然年华小姐姐讲解了一番,但还是没能很透彻的明白,以此记录,再找机会弄明白。*****where user='admin' password='123123';
用户名正确,密码错误,where查询的结果为“false”,so无结果
用户名正确,密码错误,结果为“false”;
1恒等于1,结果为“true”;
所以where查询的结果为“true”,but为什么会将user表中这两个字段的所有值查询出来?
where后面只有1=1,恒为“true”,but为什么能全部查出来?
关于SQL查询机制,年华小姐姐是这样解释的:
第一条语句:select user,password from users where user='admin' and password='123456md5的值';
首先,将表中第一条数据(admin)提取出,判断where后面的admin是否等于表中admin&判断123456的md5值是否等于表中admin对应的password值,如果都相等,那么where语句为true,再一次对第二条第三条对应的值进行判断。最终会将符合where条件的值显示出。
第二条语句:select user,password from users where 6=6;
首先确认,6恒等于6,所以where语句恒为true。现在进行判断,先拿出第一条数据,判断where后面的语句是否为真,为真就输出,那么第一条将被输入,第二条、第三条、第n条一次被显示出,所以1=1会显示出表中所有的内容。
好,现在来到了SQL注入的万能密码环节。
1、 ' or 1=1
SQL语句为: select......where user='' or 1=1 and password='';
会将所有的内容查出,但是否能登陆成功就要看程序员如何写的网站验证机制了(源码),如果要求查询出的列数>=1,就可以登录;如果相反,则不能登录。
DVWA---Brute Force(Low)
测试语句1: amdin' or 1=1 -- 未登录成功
sql中执行结果:
测试语句2: admin' or '1'='1' -- 登陆失败
测试语句3: admin' or '1'='1 -- 登录成功
- PHP的SQL注入
- 新手上路 SQL注入的基础知识①
- SQL注入漏洞全接触
- SQL注入漏洞有哪些
- 手动方式SQL注入脚本命令之精华版
- 输入值/表单提交参数过滤有效防止sql注入的方法
- sql注入预防
- sql注入
- SQL注入天书
- SQL注入的基础和原理
- SQL注入网站入侵实例
- 认识sql注入
- 0起点自学sql注入
- sql注入的原理详解
- sql注入(2)
- SQL注入测试的测试点
- SQL Server应用程序中的高级SQL注入1
- SQL注入时"Illegal mix of collations for operation 'UNION'"出现的原因
- SQL注入与ASP木马上传
- 初步熟悉掌握使用burpsuit,预习sql注入漏洞,重现皮卡丘课程的实验过程**