2、信息收集

信息收集是属于前期交互阶段所需要了解的问题。

2.1、前期交互内容

  • 签署授权文件:首要要和受测试方签订授权协议。

  • 划定范围:指定了一个二级域名作为测试目标,那么其他二级域名在测试范围内。如果测试目标是在其他服务厂商,或者服务器上有其他额外的测试目标是否划入范围内。

  • 情报搜集:开放渠道情报、网络踩点、识别目标防护机制(管理、网络、主机、应用)。

2.2、开放渠道情报

  • 数据来源:搜索引擎提供的开放情报、社交网站、地方性门户、电子邮件服务提供商
  • 关注点:企业情报、个人情报

2.3、网络踩点

  • 创建目标列表:存活主机/版本信息/识别补丁级别/搜索脆弱的Web应用/确定封禁阈值/出错信息/可以攻击的脆弱端口/过时系统/虚拟化平台和虚拟机/存储基础设施
  • 深度挖掘目标细节:端口扫描/SNMP探查/区域传送/SMTP反弹攻击/解析DNS与递归DNS服务器

2.4、踩点工具与方式

  • whois:查询域名注册信息库、服务商、管理员邮箱地址、域名注册日期和过期日期
  • nslookup:查询DNS解析信息
  • GEOIP:根据IP定位经纬度,通过Google地图获取位置信息。
  • Netcraft:查询DNS与IP信息分析,可以获取子站点、地理位置、DNS服务器地址、操作系统类型、服务器运行状况。
  • IP反查:通过IP地址可以反查指向同一IP的DNS信息(旁站攻击)。www.ip-adress.com/reverse_ip/、http://s.tool.chinaz.com/same
  • Google:GHDB(GoogleHackingDatabase)http://www.exploit-db.com/google-dorks/
  • 列目录查找:Google搜索【intitle:parent directory】
  • 查找敏感文件:Google搜索【Site:testfire.net filetype:xls】
  • 登录页面:Google搜索【site:test.com login】
  • 网络空间搜索引擎:fofa.so、ZoomEye、netcraft等
  • ping:测试主机是否活跃
  • nmap:端口扫描工具

2.5、漏洞扫描工具

  • 主机漏洞扫描器:Nessus、OpenVAS、Nexpose、nmap
  • 应用漏洞扫描器:AppScan、Burpsuite、AcunetixAWVS、W3AF
  • nmap脚本:nmap -p 445 --script smb-vuln-ms17-010 10.10.10.1/24

2.6、信息收集关注的常见端口(服务)

  • WEB 80
  • MSSQL 1433
  • MySQL 3306
  • Oracle 1521
  • Microsoft SMB 445
  • VNC 5900,5901
  • Remote Desktop 3389

2.7 口令生成器

  • cupp

2.8 常用工具用法

1)NMAP

nmap在kail中已经安装好了,直接调用就可以。

  • 默认扫描
nmap 172.18.0.18
  • 网段扫描
nmap 172.18.0.0/24
  • 扫描多个目标
nmap 172.18.0.2 172.18.0.11
  • 详细描述输出扫描

加上-v参数进行详细的扫描日志输出

nmap -v 172.18.0.0/24
  • 指定端口扫描

使用-p 端口可以进行指导的端口扫描。

nmap -p 80,22 172.18.0.0/24

扫描端口的时候还可以指定端口的范围进行扫描:

扫描同网段中开启20-100端口范围的的ip

nmap -p20-100 172.18.0.0/24
  • 从文件中读取ip扫描
nmap -iL ip.txt
  • 设置黑名单扫描ip

nmap可以设置黑名单扫描,不扫描敏感的ip,使用-exclude参数,进行单个ip的排除扫描

nmap 172.18.0.0/24 -exclude 172.18.0.1
  • sP Ping扫描

使用-sP参数,对内网主机进行探测发现

nmap -sP 172.18.0.0/24
  • PN 不进行Ping扫描

使用-PN参数,对内网进行No Ping扫描,PN No Ping 扫描,常用来绕过防火墙的检测。

  • sS 半开放式扫描

使用-sS参数,对内网进行半开放式扫描。

若端口扫描没有完成一个完整的TCP连接,在扫描主机和目标主机的一指定端口建立连接时候只完成了前两次握手,在第三步时,扫描主机中断了本次连接,使连接没有完全建立起来,这样的端口扫描称为半连接扫描,也称为间接扫描。现有的半连接扫描有TCPSYN扫描和IP ID头dumb扫描等。

  • sT TCP扫描

使用-sT参数,对内网进行TCP扫描

  • sU UDP扫描

使用-sU参数,对目标靶机进行UDP扫描:

nmap -sU 172.18.0.16

因为一般情况下这个-sU扫描是测试某个单独的UDP端口是否正常通讯,所以一般-sU常与-P指定端口扫描参数配合使用:

nmap -sU -p 22,80 172.18.0.16
  • sF FIN标志的数据包扫描

使用-sF参数,对内网进行FIN标志的数据包扫描,探测防火墙的状态,收到RST回复说明该端口关闭,否则说明是open或filtered状态。

nmap -sF 172.18.0.16
  • sV Version版本检测扫描
nmap -sV 172.18.0.16
  • O OS操作系统类型的探测
nmap -O 172.18.0.16

这里还可以使用--osscan-guess参数来猜测匹配的操作系统

nmap -O --osscan-guess 172.18.0.16
  • traceroute 路由跟踪扫描

如果对外围的目标进行扫描的话,效果要好一点。

nmap -traceroute 172.18.0.2
  • A 综合扫描
nmap -A 172.18.0.2
  • 常见混合参数

探测同网段开着80端口的ip,并进行系统猜测扫描,并将过程-v详细输出。

nmap -v -p 80 -O --osscan-guess 172.18.0.0/24

对内网同网段的主机进行批量收集,只收集开了80和22端口的ip

nmap -sS -p 22,80 172.18.0.0/24

FIN扫描出内网中网段中开启MySQL数据库的所有主机

nmap -sF -p3306 172.18.0.0/24
  • oN 标准输出

将标准输出直接写入指定的文件,对目标靶机的扫描结果以标准的形式导出为result.txt。

nmap -oN result.txt 172.18.0.3
  • oX XML输出

XML提供了可供软件解析的稳定格式输出.

nmap -oX result.xml 172.18.0.3
  • oS ScRipT KIdd|3 oUTpuT

脚本小子输出类似于交互工具输出,这是一个事后处理,适合于 'l33t HaXXorZ, 由于原来全都是大写的Nmap输出。这个选项和脚本小子开了玩笑,看上去似乎是为了 “帮助他们”。

nmap -oS result.xml 172.18.0.3
  • oG Grep输出

Grep输出是一种简单格式,每行一个主机,可以 通过UNIX工具(如grep、awk、cut、sed、diff)和Perl方便地查找和分解。

nmap -oG result.txt 172.18.0.3
  • oA 输出至所有格式

利用-oA选项 可将扫描结果以标准格式、XML格式和Grep格式一次性输出。分别存放在 .nmap,.xml和 .gnmap文件中。

nmap -oA resut 172.18.0.3
  • NMAP设置时间参数模板

paranoid、sneaky 模式用于IDS躲避

Polite 模式降低了扫描 速度以使用更少的带宽和目标主机资源。

Normal 为默认模式,因此-T3 实际上是未做任何优化。

Aggressive 模式假设用户具有合适及可靠的网络从而加速扫描。

insane 模式假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性。

【-T0 paranodi】

用于躲避IDS进行扫描,耗时非常的长。

nmap -T0 172.18.0.3

【-T1 sneaky】

用于躲避IDS进行扫描,耗时非常的长。

nmap -T1 172.18.0.3

【-T2 polite】

降低了扫描速度以使用更少的带宽和目标主机资源进行对目标靶机进行扫描

nmap -T2 172.18.0.3

【-T3 normal】

默认模式,因此-T3 实际上是未做任何优化的扫描目标靶机

nmap -T3 172.18.0.3

【-T4 Aggressive】

假设用户具有合适及可靠的网络从而加速对目标靶机的扫描。

nmap -T4 172.18.0.3

【-T5 insane】

假设用户具有特别快的网络或者愿意为获得速度而牺牲准确性的对目标靶机进行扫描。

nmap -T5 172.18.0.3
  • NMAP调用脚本进行扫描
nmap 的脚本分类
- auth: 负责处理鉴权证书(绕开鉴权)的脚本
- broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
- brute: 提供暴力破解方式,针对常见的应用如http/snmp等
- default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
- discovery: 对网络进行更多的信息,如SMB枚举、SNMP查询等
- dos: 用于进行拒绝服务攻击
- exploit: 利用已知的漏洞入侵系统
- external: 利用第三方的数据库或资源,例如进行whois解析
- fuzzer: 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞
- intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
- malware: 探测目标机是否感染了病毒、开启了后门等信息
- safe: 此类与intrusive相反,属于安全性脚本
- version: 负责增强服务与版本扫描(Version Detection)功能的脚本
- vuln: 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067

【nmap 脚本使用格式】

nmap具体的漏洞扫描脚本参考官方文档 : https://nmap.org/nsedoc/

nmap --script='$类别/$具体的脚本'

【脚本格式进阶】

-sC                             根据端口识别的服务,调用默认脚本
--script=”Lua scripts” 调用的脚本名
--script-args=n1=v1,[n2=v2] 调用的脚本传递的参数
--script-args-file=filename 使用文本传递参数
--script-trace 显示所有发送和接收到的数据
--script-updatedb 更新脚本的数据库
--script-help=”Lua script” 显示指定脚本的帮助

尝试对模板靶机进行-sC扫描,根据端口识别服务自动调用默认脚本。

nmap -sC 172.18.0.10

【常用脚本扫描】

由于内网靶机开启的端口很少,服务也很少,脚本扫描没有太多的用武之地。下面写一些常见的调用脚本扫描以作了解使用。

对MySQL进行暴力破解

nmap --script=mysql-brute <target>
3306/tcp open mysql
| mysql-brute:
| Accounts
| root:root - Valid credentials

对MsSQL进行暴力破解

nmap -p 1433 --script ms-sql-brute --script-args userdb=customuser.txt,passdb=custompass.txt <host>
| ms-sql-brute:
| [192.168.100.128\TEST]
| No credentials found
| Warnings:
| sa: AccountLockedOut
| [192.168.100.128\PROD]
| Credentials found:
| webshop_reader:secret => Login Success
| testuser:secret1234 => PasswordMustChange
|_ lordvader:secret1234 => Login Success

对Oracle数据库进行暴力破解

nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL <host>
PORT STATE SERVICE REASON
1521/tcp open oracle syn-ack
| oracle-brute:
| Accounts
| system:powell => Account locked
| haxxor:haxxor => Valid credentials
| Statistics
|_ Perfomed 157 guesses in 8 seconds, average tps: 19

对PgSQL的暴力破解

nmap -p 5432 --script pgsql-brute <host>
5432/tcp open pgsql
| pgsql-brute:
| root:<empty> => Valid credentials
|_ test:test => Valid credentials

利用DNS进行子域名暴力破解

nmap --script dns-brute www.baidu.com

Starting Nmap 7.50 ( https://nmap.org ) at 2017-07-25 13:12 ?
Nmap scan report for www.baidu.com (180.97.33.108)
Host is up (0.018s latency).
Other addresses for www.baidu.com (not scanned): 180.97.33.10
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https Host script results:
| dns-brute:
| DNS Brute-force hostnames:
| admin.baidu.com - 10.26.109.19
| mx.baidu.com - 61.135.163.61
| svn.baidu.com - 10.65.211.174
| ads.baidu.com - 10.42.4.225 ...
...
Nmap done: 1 IP address (1 host up) scanned in 92.64 seconds

查询VMware服务器(vCenter,ESX,ESXi)SOAP API以提取版本信息。

nmap --script vmware-version -p443 10.0.1.4

Starting Nmap 7.50 ( https://nmap.org ) at 2017-07-25 12:26 ?D1ú±ê×?ê±??
Nmap scan report for 10.0.1.4
Host is up (0.0019s latency). PORT STATE SERVICE
443/tcp open https
| vmware-version:
| Server version: VMware ESXi 6.5.0
| Build: 4887370
| Locale version: INTL 000
| OS type: vmnix-x86
|_ Product Line ID: embeddedEsx
Service Info: CPE: cpe:/o:vmware:ESXi:6.5.0 Nmap done: 1 IP address (1 host up) scanned in 6.28 seconds

2)BurpSuite

Burp Suite是一个Web应用程序集成攻击平台,它包含了一系列burp工具,这些工具之间有大量接口可以互相通信,这样设计的目的是为了促进和提高整个攻击的效率。平台中所有工具共享同一robust框架,以便统一处理HTTP请求,持久性,认证,上游代理,日志记录,报警和可扩展性。 Burp Suite允许攻击者结合手工和自动技术去枚举、分析、攻击Web应用程序。这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。

Proxy 提供一个直观、友好的用户界面,他的代理服务器包含非常详细的拦截规则,并能准确分析HTTP 消息的结构与内容。

Spider 爬行蜘蛛工具,可以用来抓取目标网站,以显示网站的内容,基本结构,和其他功能。

Scanner Web 应用程序的安全漏洞进行自动发现工具。它被设计用于渗透测试,并密切与您现有的技术和方法,以适应执行手动和半自动化的Web 应用程序渗透测试。

Repeater 可让您手动重新发送单个HTTP 请求

Intruderburp 套件的优势,他提供一组特别有用的功能。它可以自动实施各种定制攻击,包括资源枚举、数据提取、模糊测试等常见漏洞等。在各种有效的扫描工具中,它能够以最细化、最简单的方式访问它生产的请求与响应,允许组合利用个人智能与该工具的控制优点。

Sequencer 对会话令牌,会话标识符或其他出于安全原因需要随机产生的键值的可预测性进行分析。

Decoder 转化成规范的形式编码数据,或转化成各种形式编码和散列的原始数据。它能够智能识别多种编码格式,使用启发式技术。

Comparer 是一个简单的工具,执行比较数据之间的任何两个项目(一个可视化的“差异”)。在攻击一个Web 应用程序的情况下,这一要求通常会出现当你想快速识别两个应用程序的响应之间的差异(例如,入侵者攻击的过程中收到的两种反应之间之间,或登录失败的反应使用有效的和无效的用户名)之间,或两个应用程序请求(例如,确定不同的行为引起不同的请求参数)。

Burp Target 组件主要包含站点地图、目标域2部分组成,他们帮助渗透测试人员更好地了解目标应用的整体状况、当前的工作涉及哪些目标域、分析可能存在的攻击面等信息。

3)SQLMAP

练习SQL注入可以使用sqli-labs

  • GET注入
# 测试注入
sqlmap.py -u "url"
# 获取数据库
sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --dbs
# 获取当前使用的数据库 --current-db
sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --current-db
# 获取数据表,-D为数据库名
sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" -D "security" --tables
# 获取数据库列名,-T为数据库表名
sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" -D "security" -T "users" --columns
# 获取指定字段的值
sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" -D "security" -T "users" --dump -C"id,username,password"
# 语句总结
-u 指定目标url
--dbs 列出数据库系统中的数据库
--current-db 列出当前使用的数据库
--tables 列出数据库中的数据表
--columns 列出数据表中的字段
--dump 获取指定的数据
  • POST注入-自动获取表单
# 自动获取form表单测试
sqlmap.py -u "http://172.18.0.2/Less-11/" --forms
# 使用--dbs列出数据库系统所有数据库
sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --forms --dbs
# 使用--current-db列出系统当前数据库
sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --forms --current-db
# 列出数据库中的数据表
sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --forms --tables -D "security"
# 使用--columns列出表中的字段
sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --forms --columns -D "security" -T "users"
# 使用--dump获取字段中的数据
sqlmap.py -u "http://172.18.0.10/Less-1/?id=1" --forms --dump -C"id,username,password" -D "security" -T "users"
  • POST注入-从文件中加载HTTP请求

配置代理,使用BurpSuite抓取数据包,【Copy file】保存至桌面为xx.txt

GET /Less-1/?id=1 HTTP/1.1
Host: 172.18.0.10
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0

使用-r文件中加载HTTP请求

sqlmap.py -r C:\Users\admin\Desktop\xx.txt
  • 绕过WAF

SQLMap下有一个名为tamper的目录,里面为绕过waf的脚本,使用--tamper选项可以使用。

示例为:(宽字节注入)绕过,

sqlmap.py -u "http://172.18.0.2/Less-32/?id=1" --batch -v 3 --tamper "unmagicquotes.py"

4)Metasploit

msfconsole进入界面,Metasploit的辅助模块中提供了几款实用的端口扫描器。在线手册

https://www.offensive-security.com/metasploit-unleashed/

  • 常用命令使用方法
search 搜索模块
use 利用模块
show options 显示模块需要的参数
set 设置参数
run 启动
  • 主机扫描

Metasploit中提供了辅助模块用于活跃主机的探测,这些模块位于Metasploit源码路径的modules/auxiliary/scanner/discovery/目录中,主要有以下几个:

arp-sweep
ipv6_multicast_ping
ipv6_neighbonip
ipv6_neighbor_router_advertisement
udp_probe
udp_sweep 两个常用模块的说明如下: arp-sweep:使用ARP请求枚举本地局域网络中的所有活跃主机。
udp-sweep通过发送UDP数据包探查指定主机是否活跃,并发现主机上的UDP服务。

在TCP/IP网络环境中,一台主机在发送数据帧前需要使用ARP(Address Resolution Protocol,地址解析协议)将目标地址转换成MAC地址,这个转换过程是通过发送一个ARP请求来完成的。如IP为A的主机发送一个ARP请求获取IP为B的MAC地址,此时如果IP为B的主机存在,那么它会向A发出一个回应。因此,可以通过发送ARP请求的方式很容易地获取同一子网上的活跃主机情况,这种技术也称为ARP扫描。

  • 口令嗅探爆破

msf中与嗅探相关的模块可以通过sniffer搜索,

psnuffle 口令嗅探

>use auxiliary/sniffer/psnuffle
>show options
>run

ssh_login 口令爆破

>use auxiliary/scanner/ssh/ssh_login
>set RHOSTS 172.18.0.6
>set THREADS 50
>set PASS_FILE /usr/share/wordlists/sqlmap.txt
>set USERNAME root
>run
  • Meterpreter

一个用于后渗透测试的辅助模块,可以生成可执行文件对目标主机进行一系列操作。

1、clearev命令:清除入侵痕迹
2、timestomp命令:改变文件的修改或访问时间

【技巧总结】Penetration Test Engineer[2]-Information gathering的更多相关文章

  1. 【技巧总结】Penetration Test Engineer[5]-Operating System Security(SQL Server、MySQL提权)

    4.数据库安全基础 4.1.MSSQL 数据库角色权限 sysadmin:执行SQL Server中的任何动作 db_owner:可以执行数据库中技术所有动作的用户 public:数据库的每个合法用户 ...

  2. 【技巧总结】Penetration Test Engineer[3]-Web-Security(SQL注入、XXS、代码注入、命令执行、变量覆盖、XSS)

    3.Web安全基础 3.1.HTTP协议 1)TCP/IP协议-HTTP 应用层:HTTP.FTP.TELNET.DNS.POP3 传输层:TCP.UDP 网络层:IP.ICMP.ARP 2)常用方法 ...

  3. 【技巧总结】Penetration Test Engineer[4]-Web-Security(文件处理、会话管理、访问控制、SSRF、反序列化漏洞)

    Web安全基础2 3.8.文件处理 1)文件上传 一个正常的业务需求,问题在于控制上传合法文件. 防御文件上传 客户端javascript校验(通常校验扩展名) 检查MIME类型 检查内容是否合法 随 ...

  4. 【技巧总结】Penetration Test Engineer[1]-Basic

    1.渗透测试基础 1.1.渗透测试分类 黑盒测试:从远程网络位置来评估目标网络基础设施,没有任何相关信息 白盒测试:内部发起,了解到关于目标环境的所有内部与底层知识 灰盒测试:结合两者优势,根据对目标 ...

  5. Shodan information gathering use parameter

    1.we sue the Search Engines Shodan we can gather much information on the line web , such we want to ...

  6. OSCP Learning Notes - Information Gathering

    Common Tools Google Exploit-DB/Google Hacking DB WHOIS Netcraft theharvester Example: Google search: ...

  7. Gathering Initial Troubleshooting Information for Analysis of ORA-4031 Errors on the Shared Pool

    In this Document   Purpose   Troubleshooting Steps   References APPLIES TO: Oracle Database - Enterp ...

  8. Penetration Testing、Security Testing、Automation Testing

    相关学习资料 http://www.cnblogs.com/LittleHann/p/3823513.html http://www.cnblogs.com/LittleHann/p/3828927. ...

  9. Gathering Fingerprinting

    1. Banner grabbing with Netcat Netcat is multipurpose networking tool that can be used to perform mu ...

随机推荐

  1. PGM学习之一

    一 课程基本信息 本课程是由Prof.Daphne Koller主讲,同时得到了Prof. Kevin Murphy的支持,在coursera上公开传播.在本课程中,你将学习到PGM(Probabil ...

  2. 【spring学习笔记二】Bean

    ### bean的三种实例化方式: 1.构造 2.静态工厂 3.实例工厂 其中,工厂就是工厂的概念,工厂函数factor-method会返回她生产出来的产品类. 而构造初始化也可以选择初始化方式和销毁 ...

  3. PHP-从零开始使用Solr搜索引擎服务(上)

    前言: 原文地址: http://www.cnblogs.com/JimmyBright/p/7156069.html 使用搜索引擎,我们常规的数据查询会快很多,还可以对关键词进行中文分词查询,返回一 ...

  4. 【ARC077F】SS

    Description 如果某个串可以由两个一样的串前后连接得到,我们就称之为"偶串".比如说"xyzxyz"和"aaaaaa"是偶串,而& ...

  5. 洛谷 P5105 不强制在线的动态快速排序

    P5105 不强制在线的动态快速排序 题目背景 曦月最近学会了快速排序,但是她很快地想到了,如果要动态地排序,那要怎么办呢? 题目描述 为了研究这个问题,曦月提出了一个十分简单的问题 曦月希望维护一个 ...

  6. POJ.1067 取石子游戏 (博弈论 威佐夫博弈)

    POJ.1067 取石子游戏 (博弈论 威佐夫博弈) 题意分析 简单的威佐夫博弈 博弈论快速入门 代码总览 #include <cstdio> #include <cmath> ...

  7. 不同tab下的列表长度不同,tab的样式和底部的位置不同

    要求:当点击不同的tab时,被点击的tab样式不同,产生不同的列表.当列表长度大于屏幕高度时,底部随列表显示:当列表长度小于屏幕高度时,底部固定在屏幕的底部. demo: <!DOCTYPE h ...

  8. EndNote文献悬挂缩进的设置方法及设置参考文献序号后面空格长度

    一.EndNote文献悬挂缩进的设置方法 写论文时使用EndNote来插入和管理参考文献是一种非常方便的方法,但有时不同的杂志要求插入的文献要求第二行缩进格式,或者不缩进. 1.在EndNote中Ed ...

  9. HDU 6071 同余最短路 spfa

    Lazy Running Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)To ...

  10. struts的问题

    将SSH框架进行整合的时候,将三者的jar包加入到lib下面,然后测试struts,结果页面显示不出来报404错误,可是路径没有问题 找到罪魁祸首是:原因两个:(1)在未用到spring的时候,先不要 ...