首先在学习简单的sql注入之前,需要有一些简单的基础知识,比如什么是web,web是如何交互的;URI与URL;http协议以及表单提交方式(GET,POST等的区别),除此之外,我们还需要了解一些最简单的sql语句,对表数据的增删改查等,最后了解sql注入的原理以及方法,最后介绍sql注入的工具(免费共享哦)

一.基础知识

web应用:我的理解简单来说就是一个可以用浏览器打开并且访问的程序或者一个具体的网站

web就是我们俗称的万维网,基本底部架构就是常见的B/S架构,或称浏览器(Brower)/服务器(Server),可以参考下图

"B/S架构图"

web服务流程:浏览器发出请求——–>服务端解析对应动态脚本,输出静态的HTML——–>输出静态HTML客户端——–>客户端将HTML解析成文字,图片,声音等

HTTP协议

HTTP请求

"h1"

HTTP响应

"h2"

HTML:描述网页的一种标记语言。用一些特定属性来描述一个网页的内容

JS(JavaScript):它是一种直译式的脚本语言。是一种动态的,弱类型以及基于原型的语言,内置支持类型

web中间件

各种语言对应中间件是不同的,如下图:

"中间件"

URI:Uniform Resource Identifier统一的资源标识 比如:/a.txt

URL:Uniform Resource Locator统一的资源定位 比如:http://xxx.xx:80/a.txt

GET 长度限制1024,特别快,不安全,URL地址栏里提交的参数是可见的

URL提交参数以?分割

每个参数格式:参数名=参数值

多个参数用&连接

URL编码 空格20% “ %22 % %25

POST 长度一般来说没限制,通常由中间件限制,较慢,安全,参数在URL地址栏里不可见

什么Cookie、Session,他们有什么区别?简单说明如下

id=xx,username=xxx

Session

存放一个id值sessionId

SQL语句基础知识

增删改查

1
2
3
4
5
insert into 库.表(列1,列2,....) values(值1,值2,....) 条件
delete from 库.表 条件
update 库.表 set 列1=值,列2=值 条件
select 列1,列2 from 库.表 条件(*代表全部列,limit分页(limit 起始下标,条数))
条件语句 where ....

SQL注入初级

1.什么是sql注入?

Web程序未将用户提交参数进行过滤,将攻击者提交的带有SQL攻击的字符带入了数据库查询,导致SQL查询语句语义发生了改变。

2.SQL注入分类

分类:注入取数据方式不一样来分类,(按获取数据的速度排列)

1
2
3
4
5
1.延时注入
sleep(秒)
2.盲注(and 1=1 and 1=2)and hex(substr(data,1,1))>0
3.错误显示注入(利用数据库的错误消息来进行注入),mysql(64个字符),oracle(大概2000个字符左右),mssql(1千多还是2千多字符)
4.union注入 union all select username from admin

3.sql注入能干什么到底

1.获取数据库数据(曾删改查)

2.读写文件

3.执行操作系统命令

4.如何判断是否存在注入

数字型、字符型、搜索型

数字型

1
2
sql="select * from news where id=1 and 1=1";
sql="select * from news where id=1 order by 1";

字符型

1
2
3
1' and '1'='1
sql="select * from news where type='1' and '1'='1'";
sql="select * from news where type='1' order by 1'";

搜索型

1
2
%' and '%'='
sql="select * from news where title like '%%'"

5.万能钥匙 哈哈

1
2
3
4
5
6
admin' or 'a'='a
admin' or 1=1#(mysql)
admin' or 1=1--(sqlserver)
admin' or 1=1;--(sqlserver)

sql="select * from admin where username='' and password=''";

SQL注入超级工具分享(下次更)