浅浅地练习一下sql注入简单版,永真公式。

SQL注入概述:

SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)

攻击:

点击链接进入网页,出现登录页面

尝试一下,万能密码admin’ or 1=1 – ,密码随便填。

OK,成功。

还有一种方式:
Kali里面的sqlmap来跑一下。首先网站页面是一个登录页面,是使用post来传输数据的。先用bp来抓一个包。

从图中我们知道了POST传输的数据的格式username=[表单内容]&password=[表达内容]
使用Kali的sqlmap,因为是post请求,所以要在使用’–data=提交的数据’,就会以post的方式来探测。探测结果如下:

查询数据库users:sqlmap -u “url” –data=“” –users

然后爆数据名,爆表,爆列。

原理:

由于是在靶场中进行的,就可以将源码拿出来看一看。

定义俩个POST参数
$ xx=$ _POST[‘username’];
$ yy=$ _POST[‘password’];
将两个POST的内容传入sql语句执行,再将结果返回来,查询的结果row>0就可以了。
$ result = mysql_query(“select * from user where name=‘$ xx’ and pwd =‘$ yy’”);
但是如果我们在传入的参数里面使用admin’ or 1=1 – ,–是注释标记,传进去就会将语句改变成select * from user where name=’admin’ or 1=1 –
,后面的内容已经被–注释掉了,所以随便写都行。因为有or 1=1,这个一定是正确的,那执行的结果肯定也是正确的,就满足$row>0的条件。就被绕过了。