哪位大神能告诉我什么是sql注入?讲的通俗易懂些,百度的资料都看过了,还有如何用sqlmap进行sql注入?
发布网友
发布时间:2022-04-07 15:42
我来回答
共1个回答
热心网友
时间:2022-04-07 17:11
一般开发,肯定是在前台有两个输入框,一个用户名,一个密码,会在后台里,读取前台传入的这两个参数,拼成一段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拼。追问”这段SQL执行的时候,返回的 count值肯定大于1的“这句话是什么意思捏?还有,进行sql注入的条件都有啥,我在网上看到有人说什么id=!@#!@的网址就可以注入,这是为什么?(回答完多加50财富值,真的很想知道)