简述啥是SQL注入,写出简单的SQL注入语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述啥是SQL注入,写出简单的SQL注入语句相关的知识,希望对你有一定的参考价值。

一般开发,肯定是在前台有两个输入框,一个用户名,一个密码,会在后台里,读取前台传入的这两个参数,拼成一段SQL,例如: select count(1) from tab where usesr=userinput and pass = passinput,把这段SQL连接数据后,看这个用户名/密码是否存在,如果存在的话,就可以登陆成功了,如果不存在,就报一个登陆失败的错误。对吧。
但是有这样的情况,这段SQL是根据用户输入拼出来,如果用户故意输入可以让后台解析失败的字符串,这就是SQL注入,例如,用户在输入密码的时候,输入 \'\'\'\' \' or 1=1\'\', 这样,后台的程序在解析的时候,拼成的SQL语句,可能是这样的: select count(1) from tab where user=userinput and pass=\'\' or 1=1; 看这条语句,可以知道,在解析之后,用户没有输入密码,加了一个恒等的条件 1=1,这样,这段SQL执行的时候,返回的 count值肯定大于1的,如果程序的逻辑没加过多的判断,这样就能够使用用户名 userinput登陆,而不需要密码。
防止SQL注入,首先要对密码输入中的单引号进行过滤,再在后面加其它的逻辑判断,或者不用这样的动态SQL拼。
参考技术A SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这是SQL注入的标准释义。

写出SQL注入的方法和联合查询数据库所用到的SQL语句?

注入方法:

a)寻找注入点,构造特殊的语句

传入SQL语句可控参数分为两类 
1. 数字类型,参数不用被引号括起来,如?id=1 
2. 其他类型,参数要被引号扩起来,如?name="phone"

b)用户构造SQL语句(如:'or 1=1#;admin'#(这个注入又称PHP的万能密码,是已知用户名的情况下,可绕过输入密码)以后再做解释)

c)将SQL语句发送给DBMS数据库

d)DBMS收到返回的结果,并将该请求解释成机器代码指令,执行必要得到操作

e)DBMS接受返回结果,处理后,返回给用户

因为用户构造了特殊的SQL语句,必定返回特殊的结果(只要你的SQL语句够灵活)


字数限制,剩下的你自己去教学网站看一下吧。

参考技术A 才大幅度的地方

以上是关于简述啥是SQL注入,写出简单的SQL注入语句的主要内容,如果未能解决你的问题,请参考以下文章

简述sql注入漏洞

写出SQL注入的方法和联合查询数据库所用到的SQL语句?

老板,系统被 SQL 注入攻击了

sql注入攻击的原理

简单的SQL注入

SQL注入笔记