新手学渗透之SQL注入原理

  • 内容
  • 相关
想要了解SQL注入原理,就必须去明白什么是数据库,这里我就大概讲一下,数据库就是存储数据的,如果我们需要用的时候,可以用编程语言去调用这个数据,让他展示在页面上。

开始讲解SQL注入原理


我们首先先来看看Web程序三层架构:


  1. - 界面层
  2. - 业务逻辑层
  3. - 数据访问层

区分层次是为了啥,为了"高内聚低耦合",什么是低耦合,就是程序直接关联性不能太强,为什么,如果A产品和B产品是关联的,如果有一天A产品坏了,可能就会导致B产品也坏,这样就是不好的设计理念,所以这里为什么有三层,如果三层中一层坏了,其他两层是不会收影响的,并且,分层式结构是最常见,也是最重要的一种结构被应用于众多类型的软件开发。

数据库驱动的Web应用程序也是有三层:


  1. - 表示层
  2. - 业务逻辑层
  3. - 数据访问层

如图所示(虽然画的有点丑,但还是凑合看吧~):

三层回话过程.png

上图大概过程就是:


 1. 访问了https://www.0dayhack.com连接到此网站的服务器
 2. 业务逻辑层的服务器从本地存储加载index.php脚本并且解析
 3. 脚本连接对应的数据库,并且执行SQL语句
 4. 数据库范围层的数据库返回SQL语句执行的结果给服务器
 5. 然后服务器讲内容封装成了HTML,并且发送给了浏览器
 6. 然后表示层(浏览器)解析HTML的文件,将它的内容展示出来



我们现在再以DVWA为案例来讲解SQL注入原理:

源代码low.png

那么当我在输入框里输入1的时候,执行的是哪段sql语句呢,我们可以来看看:
注入语句.png

等于说,当我们输入一个语句后,会这么执行sql语句:
`SELECT first_name, last_name, last_login FROM users WHERE user_id = '1'`
(还有之前我讲过DVWA low等级的注入,可以看看:https://www.0dayhack.com/post-815.html)

那么这个时候,我们来输入一下一些而已的sql注入语句,然后看看我们执行的其实是:

(绿色字体皆为代码部分)

SELECT first_name, last_name FROM users WHERE user_id = '1' and 1=1
SELECT first_name, last_name FROM users WHERE user_id = '1' and 1=2
SELECT first_name, last_name FROM users WHERE user_id = '1' order by 3-- a'
SELECT first_name, last_name FROM users WHERE user_id = '1' union select database(),2-- a

Sql注入原理之万能密码登录


这里我就利用一个平台来讲解:
sql平台.png

这里他说了sql执行的语句是`select user_id,user_type,email from users where user_id='用户名' and password='密码'`,那么我们是否可以构造一下sql语句,使他具有攻击性。

小知识(看了别打我):
type的password.png

然后我们来利用万能密码来登入网站:

万能密码登录1.png

成功登入:

成功登入.png


万能密码原理:

万能密码原理.png

(因为它这里写了原理,我就图个方便直接截图了~)

本文标签:

版权声明:若无特殊注明,本文皆为《only_free》原创,转载请保留文章出处。

收录状态:[百度已收录] | [360已收录] | [搜狗已收录]

本文链接:新手学渗透之SQL注入原理 - https://www.0dayhack.com/post-825.html

严重声明:本站内容来自于互联网,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规,黑客不是骇客,黑客维护网络安全

发表评论

电子邮件地址不会被公开。 必填项已用*标注