照着数据结构书敲的,内含快速插入排序算法#include<stdio.h>#include<stdlib.h>#defineMaxSize50typedefintElemType;typedefstruct{ElemTypedata[MaxSize];intlength;}SqList;/**创建一个线性表,使用了CreateList后就不需要使用InitList来初始化*线性表了**/voidCreateList(SqList*&L,ElemTypea[],intn){inti;L=(SqList*)malloc(sizeof(SqList));for(i=0;i<n;i++)L->data[i]=a[i];L->length=n;}/**初始化一个线性表,表中的数据是空的**/voidInitList(SqList*&L){L=(SqList*)malloc(sizeof(SqList));L->length=0;}/**销毁线性表,释放线性表中的内存**/voidDestoryList(SqList*&L){free(L);}/**判断线性表是否为空表,如果为空则返回真TRUE**/boolListEmpty(SqList*L){return(L->length);}/**返回当前线性表的长度Length**/intListLength(SqList*L){return(L->length);}/**输出线性表,顺序显示L中个节点的值域**/voidDispList(SqList*L){inti;for(i=0;i<L->length;i++)printf("%d\n",L->data[i]);printf("\n");}/**获取线性表中某个数据的元素值,用e返回**/boolGetElem(SqList*L,inti,ElemType&e){if(i<1||i>L->length)returnfalse;e=L->data[i-1];returntrue;}/**按值查找线性表中出现的位置(序号)**/intLocateElem(SqList*L,ElemTypee){inti=0;while(i<L->length&&L->data[i]!=e)i++;if(i>=L->length)return0;elsereturni+1;}/**插入数据元素**/boolListInsert(SqList*&L,inti,ElemTypee){intj;if(i<1||i>L->length+1)returnfalse;i--;for(j=L->length;j>i;j--)L->data[j]=L->data[j-1];L->data[i]=e;L->length++;returntrue;}/**删除数据元素**/boolListDelete(SqList*&L,inti,ElemType&e){intj;if(i<1||i>L->length)returnfalse;i--;e=L->data[i];for(j=i;j<L->length-1;j++)L->data[j]=L->data[j+1];L->length--;returntrue;}/**删除所有值等于x的元素*书本P35解法1*/voiddelnode1(SqList*&L,ElemTypex){intk=0,i;for(i=0;i<L->length;i++)if(L->data[i]!=x){L->data[k]=L->data[i];k++;}L->length=k;}/**插入排序算法*书本P36解法2*/voidmove2(SqList*&L){inti=0,j;j=L->length-1;ElemTypepivot=L->data[0];while(i<j){while(j>i&&L->data[j]>pivot)j--;L->data[i]=L->data[j];i++;while(i<j&&L->data[i]<=pivot)i++;L->data[j]=L->data[i];j--;}L->data[i]=pivot;printf("i=%d\n",i);}intmain(){inta[]={3,8,2,7,1,5,3,4,6,0};SqList*L;CreateList(L,a,10);//数组a的长度为10DispList(L);move2(L);printf("排序后:\n");DispList(L);}
什么是信息收集:收集渗透目标的情报是最重要的阶段。如果收集到有用的情报资料的话,可以大大提高对渗透测试的成功性。收集渗透目标的情报一般是对目标系统的分析,扫描探测,服务查点,扫描对方漏洞,查找对方系统IP等,有时候渗透测试者也会用上“社会工程学”。渗透测试者会尽力搜集目标系统的配置与安全防御以及防火墙等等。内容概要网站及服务器信息搜索引擎GoogleHacking社交网站第三方未公开数据网站及服务器信息:whoiswhois是用来查询域名的IP以及所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)。在whois查询中,注册人姓名和邮箱信息,通常对于测试个人站点非常有用,因为我们可以通过搜索引擎,社交网络,挖掘出很多域名所有人的信息。而对于小站点而言,域名所有人往往就是管理员。例如下面whoiswww.sysorem.xyz查看www.sysorem.xyz这个域名的注册信息DNS服务器查询除了whois查询之外,我们还可以通过host命令来查询dns服务器,格式:host命令[-aCdlriTwv][-cclass][-Nndots][-ttype][-Wtime][-Rnumber][-mflag]hostname[server]查询域名服务器从图中可以看到有3个dns服务器,分别为:dns1.hdu.edu.cndns2.hdu.edu.cndns2.hdu.edu.cnDNS记录类型=>在买了域名后IDC的那个后台里,添加解析记录的地方就能看到例如查询A记录,即查IP,如图域名枚举在得到主域名信息之后,如果能通过主域名得到所有子域名信息,再通过子域名查询其对应的主机IP,这样我们能得到一个较为完整的信息。使用fierse工具,可以进行域名列表查询:fierce-dnsdomainName除fierse之外,dnsdict6、dnsenum、dnsmap都可以进行域名枚举。反向地址解析我们经常使用到得DNS服务器里面有两个区域,即“正向查找区域”和“反向查找区域”,正向查找区域就是我们通常所说的域名解析,反向查找区域即是这里所说的IP反向解析,它的作用就是通过查询IP地址的PTR记录来得到该IP地址指向的域名.由于在域名系统中,一个IP地址可以对应多个域名,因此从IP出发去找域名,理论上应该遍历整个域名树,但这在Internet上是不现实的。为了完成逆向域名解析,系统提供一个特别域,该特别域称为逆向解析域in-addr.arpa。这样欲解析的IP地址就会被表达成一种像域名一样的可显示串形式,后缀以逆向解析域域名”in-addr.arpa”结尾。例如一个IP地址:222.211.233.244,其逆向域名表达方式为:244.233.221.222.in-addr.arpadig:使用dig进行反向解析的命令格式为:dig-xip@dnsserver#用dig查看反向解析在线查询也是一种办法http://dns.aizhan.com/想要获得完整的信息,可以多尝试不同的工具,整合结果。很多工具无法做反向查询的原因,在于域名所有者没有添加反向解析记录。关于DNS区域传送漏洞区域传送操作指的是一台后备服务器使用来自主服务器的数据刷新自己的zone数据库。一般来说,DNS区域传送操作只在网络里真的有后备域名DNS服务器时才有必要执行,但许多DNS服务器却被错误地配置成只要有人发出请求,就会向对方提供一个zone数据库的拷贝。当一个单位没有使用公用/私用DNS机制来分割外部公用DNS信息和内部私用DNS信息的时候,此时内部主机名和IP地址都暴露给了攻击者。就像是把一个单位的内部网络完整蓝图或导航图奉送给了别人。详细了解,传送门,感觉这位大神写的蛮清楚的,可以参考下服务指纹识别很多站点,可能没有自定义错误信息。因此在url上随便输入一个不存在的地址,可能会返回有用的信息。通过上图,我们知道该站点的应用程序由PHP编写,Web服务器为Apathe/2.2.22,操作系统为Windows通过端口判断服务通过扫描服务器开放的端口判断服务器上存在的服务,nmap具体使用在后面会讲到从图中可以看出该服务器搭建了http(Web)、msrpc(文件共享)、MSSQL数据库等操作系统指纹识别识别目标主机的操作系统,首先,可以帮助我们进一步探测操作系统级别的漏洞从而可以从这一级别进行渗透测试。其次,操作系统和建筑在本系统之上的应用一般是成套出现的,例如LAMP或者LNMP。操作系统的版本也有助于我们准确定位服务程序或者软件的版本,比如一般情况下windowsserver2003搭载的IIS为6.0,windowsserver2008R2搭载的是IIS7.5。Banner抓取banner抓取是应用程序指纹识别而不是操作系统指纹识别。Banner信息并不是操作系统本身的行为,是由应用程序自动返回的,比如apathe、exchange。而且很多时候并不会直接返回操作系统信息,幸运的话,可能会看到服务程序本身的版本信息,并以此进行推断。下图可以看出ftp服务器软件为FileZilla及版本等信息使用Nmap进行操作系统探测使用Nmap识别操作系统最简单的方法为使用-O参数格式nmap-OURI,从图中可以看到服务器操作系统为Linux使用p0f进行操作系统探测p0f是一款被动探测工具,通过分析网络数据包来判断操作系统类型。同时p0f在网络分析方面功能强大,可以用它来分析NAT、负载均衡、应用代理等。下面命令的含义为监听网卡eth0,并开启混杂模式。这样会监听到每一个网络连接,部分结果摘录如下:p0f-ieth0–p使用Xprobe2进行操作系统探测Xprobe2是一款使用ICMP消息进行操作系统探测的软件,探测结果可以和Nmap互为参照。但是该软件目前公开版本为2005年的版本,对老的操作系统探测结果较为准确。简单用法:xprobe2-vURI(这个平时用用我基本也扫不出什么东西233333)抓取操作系统指纹的工具还有很多,如miranda等,不过多举例。WAF检测WafW00f是Python脚本,用于检测网络服务是否处于网络应用防火墙保护状态,极其有用。使用WafW00f检测网络服务器和网络传输之间是否存在网络应用防火墙,这不仅可以发展测试战略,而且还能开发出绕过网络应用防火墙的高级技术。简单用法wafw00fURL从图中可以看到该网站处于Waf保护状态搜索引擎Google搜索技术融合了用于执行Google的详细搜索的高级搜索技术。在Google首页右下角可以点击“Settings”->”Advancedsearch”进行详细设置在高级设置页面可以设置“所有字”、“精确的字或短语”、“含以下任何字”、“不含以下任何字”、“数字范围”、“语言”、“地区”、“最新更新”、“网站或域名”、“关键字出现位置”、“安全搜索”、“阅读级别”、“文件类型”、“使用权限”等等,更精确的搜索由于一些众所周知的原因,我们在不能欢快滴科学上网的时候,会用到国内的一些搜索引擎。同样也是可以设置的,不过相对而言没Google强大。渗透测试中还有一些非常好用的搜索引擎,比如shodan(https://www.shodan.io/)下面是搜索sogou.com的返回结果点击第一个结果的Details可以查看详细信息,包括地理位置、服务器开放的端口等等除了shodan之外,当然还不得不提知道创宇的“钟馗之眼”->ZoomEye分分钟吊炸天有木有?推荐余弦的《ZoomEye高级黑》Googlehacking对于普通的用户而言,Google是一个强大的搜索引擎;而对于黑客而言,则可能是一款绝佳的黑客工具。正因为google的检索能力强大,黑客可以构造特殊的关键字语法,使用Google搜索互联网上的相关隐私信息。通过Google,黑客甚至可以在几秒种内黑掉一个网站。这种利用Google搜索相关信息并进行入侵的过程就叫做GoogleHack。下面介绍一些常用的所谓“谷歌黑客语法”。例如批量查找学校网站的后台输入如下关键字site:hdu.edu.cnintext:管理|后台|登录|用户名|密码|验证码|系统|账号|后台管理|后台登录intext:把网页中的正文内容中的某个字符做为搜索条件.例如在google里输入:intext:杭电.将返回所有在网页正文部分包含”杭电”的网页allintext:使用方法和intext类似.intitle:搜索网页标题中是否有我们所要找的字符.例如搜索:intitle:杭电.将返回所有网页标题中包含”杭电”的网页.同理allintitle:也同intitle类似.cache:搜索google里关于某些内容的缓存,有时候往往能找到一些好东西.define:搜索某个词的定义,例如搜索:define:杭电,将返回关于“杭电”的定义.filetype:搜索制定类型的文件,例如:filetype:doc.将返回所有以doc结尾的文件URL.info:查找指定站点的一些基本信息.inurl:搜索我们指定的字符是否存在于URL中.例如输入:inurl:admin,将返回N个类似于这样的连接:http://xxx/admin,常用于查找通用漏洞、注入点、管理员登录的URLallinurl:也同inurl类似,可指定多个字符.linkurl:例如搜索:inurl:hdu.edu.cn可以返回所有和hdu.edu.cn做了链接的URL.site:搜索指定域名,如site:hdu.edu.cn.将返回所有和hdu.edu.cn有关的URL.还有一些*作符+把google可能忽略的字列如查询范围-把某个字忽略~同意词.单一的通配符*通配符,可代表多个字母“”精确查询实际操作时需根据情况组合使用,下面列举些常用的:intext:toparentdirectoryinurl:upload.phpintitle:poweredbyxxxindexof/uploadFiletype:txtinurl:robots.txtindexof/passwdsite:xxx.comfiletype:mdb|ini|php|asp|jsp….….社交网站社交网站往往是我们公开信息最多的地方,比如我们常用的QQ、QQ空间、微信朋友圈、微博等。能获取到的信息可能有姓名、年龄、生日、星座、爱好、照片、人际交往关系、甚至邮箱、手机、住址、身份证等等隐私、敏感信息。还有一些招聘求职网站也往往是信息泄露最严重的地方。对这些信息加以利用,总能得到一些惊喜。比如看上一个妹子,看她空间很朋友圈,基本上都能知道她的生活规律就能摸的很清楚,她长什么样,喜欢什么,闺蜜有哪些、平时去哪里玩,有时候还能推算出此时此刻她正在做什么。朋友圈那种输入名字算各种的,大部分妹子都会输入自己的名字生日等。。既然有看上的妹子,那就花半天时间了解了解妹子。。辅之一些必要社工手段,最后,最后一不小心就得到:推荐一本书《欺骗的艺术》,在渗透实战中,我们可以通过社会工程学的手段获取管理员的信息,比如QQ号、邮箱、常用密码等等。比如可以想办法登录某网站域名注册的平台,直接修改域名解析(亲身经历),可能能达到瘫痪整个网络服务的效果…Maltego:社工神器:Maltego是用来对来自互联网的信息进行收集、组织、可视化的工具。它可以收集某个人的在线数据信息–包括电子邮件地址、博客、Facebook中的朋友,个人爱好、地理位置、工作描述,然后可以一种更为有用、全面的形式展现出来。不过这个对国外的效果可能会好一点吧第三方未公开数据“社工库”是运用社会工程学进行攻击的时候积累的各方面数据的结构化数据库。这个数据库里有大量信息,甚至可以找到每个人的各种行为记录,比如酒店开房记录、个人身份证、姓名和电话号码。例如查询某QQ号老密码。findmima.com(要爬墙)某QQ号的群关系某社工库网站可查询以下数据,通过这些数据库可能可以查到QQ密码、邮箱密码等等信息,这样在有些时候能帮助猜解管理员相关的信息。第一部分就先写到这里了,后面还会带来新的内容,敬请关注。参考https://github.com/sysorem/Kali-Linux-Pentest-Basic*原创作者:sysorem,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)