SQL注入原理

1、程序员在处理程序的过程和数据交互时,使用字符串拼接的方式构造SQL语句。
2、未对用户可控参数进行足够的过滤,便将参数的内容拼接到SQL语句中

SQL注入的危害

1、攻击者利用SQL注入漏洞,可以获取数据库中的多种信息(例如:管理员的后台密码),从而脱去数据库中的内容,简称脱库。
2、在特别的情况下还可以修改数据库内容、插人内容到数据库或者删除数据库中的内容。
3、如果数据库权限分配存在问题,或者数据库本身存在缺陷,攻击者可以利用SQL注入漏洞读写文件,读取敏感文件或者上传恶意文件,可以GetShell。
4、利用数据库提升权限。

SQL注入实现过程(联合查询)

1、准备实验环境(前端网页和数据库),使我们能够访问到实验网页。

2、判断网页是否存在SQL注入漏洞,在这里使用最经典的单引号判断法,在id=x后面加上单引号看是否报错.

mysql联合注入爆库 sql注入联合查询法_mysql联合注入爆库

出现报错信息证明SQL注入漏洞存在,并且可以判断出输入的数据属于数字型.

3.下面我们利用联合查询的方法来获取数据库中的信息.

首先分享联合查询(union selsct)的相关知识
 ++++保证两个select语句查询的虚拟列表具有相同的列数
 ++++相同的列具有相同的数据类型
 ++++跨库跨列表查询

1) 通过order by判断当前网页在数据库中的列数(折半查找,当输入的列数大于该列数时会报错)

mysql联合注入爆库 sql注入联合查询法_安全_02


mysql联合注入爆库 sql注入联合查询法_安全_03


通过结果可以看出order by 15时正常,order by 16时报错,说明列数为15列.2) 判断显示位为(3和11)

mysql联合注入爆库 sql注入联合查询法_SQL_04

3) 利用联合查询获取数据库名字.

mysql联合注入爆库 sql注入联合查询法_数据库_05


通过database()可以查出数据库的名字为cms.4) 查询该数据库中所有的表名

mysql联合注入爆库 sql注入联合查询法_数据库_06


我大胆猜测一下,用户名和密码很可能在表cms_users中.5) 获取表cms_users中的字段名称.

mysql联合注入爆库 sql注入联合查询法_经验分享_07


哦!天呐!我好聪明!猜对了…6) 获取字段内容.

mysql联合注入爆库 sql注入联合查询法_mysql联合注入爆库_08


7) 将获取的密码密文通过百度解密.

mysql联合注入爆库 sql注入联合查询法_数据库_09


8) 验证.

mysql联合注入爆库 sql注入联合查询法_数据库_10


大家多多指导哦! -_-