手动SQL注入原理分析与实践
代码仓库
本文所用代码的代码库地址:
了解SQL注入
定义
SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统用户最高权限。
原理
造成SQL注入的原因是因为程序没有有效过滤用户的输入,使攻击者成功的向服务器提交恶意的SQL查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码。
从本质上来说,SQL注入和XSS注入很相似,都是因为没有做好对用户的输入控制而导致的错误。
环境准备
- 安装PostgresSQL 和 Mysql:
sudo apt-get update sudo apt-get install postgresql pgadmin3 sudo pg_createcluster -p 5432 -u postgres 9.3 virusTest --start sudo netstat -aWn --programs | grep postgres
- 安装Mysql
sudo apt-get update sudo apt-get install mysql-server
- 创建数据库
sudo su su postgres psql create database virustest
- 在Ubuntu上安装NodeJs
wget -t https://nodejs.org/dist/v6.9.1/node-v6.9.1-linux-x64.tar.xz tar -xf node-v6.9.1-linux-x64.tar.xz cd node-v6.9.1-linux-x64.tar.xz/bin ln -s ***** /usr/local/bin/node ln -s ***** /usr/local/bin/npm
经典注入:' or 1=1
准备工作
- 编写
models/index.js
、models/migrate.js
、models/User.js
创建如下图所示的User表:
User表
account | password |
---|---|
test0 | 1234560 |
test1 | 1234561 |
test2 | 1234562 |
- 执行
node models/migrate
初始化数据库