灵活布置、可二次开发的乌云公开漏洞及知识库搜索-尊龙凯时官方旗舰店

感谢hanc" />
灵活布置、可二次开发的乌云公开漏洞及知识库搜索
作者:freebuf.com 发布时间:2016-09-22

感谢hanc00l爬取了wooyun的网页,才使乌云关闭后,大家依旧可以访问以前的漏洞库、知识库。hanc00l发布了基于flask或者torndo的乌云公开漏洞、知识库搜索的github项目,同时发布了已经配置好的虚拟机,允许大家直接把乌云搭建在了本地。

为了方便的在本地进行乌云搜索,我准备把乌云搜索搭建在树莓派上。但是,hanc00l使用的数据库是mangodb,总数据在6gb左右。32位的mangodb支持的总共数据大小最大是2gb,而我的树莓派正是32位,所以我没办法在树莓派上布置。于是利用静态的乌云漏洞库、知识库,我自己建立了数据库、搜索页面,实现了可在apache、nginx等上布置,基于mysql数据库的乌云知识库、漏洞库搜索项目。

我的项目使用python依次处理静态页面,用正则抽取出信息再批量插入数据库;之后又写了个php,实现了对数据库的搜索。

二.python的经验分享

我在python中利用的扩展库是beautifulsoup与mysqldb。关于这两个库的介绍有很多,下面我主要介绍下我对这两个库的操作。

1)beautifulsoup的使用

from bs4 import beautifulsoup #引用库

soup=beautifulsoup(html,"html.parser") #创建beautifulsoup对象,html为目标

corps=soup.find_all('p',class_='words') #从对象中查找类名为words的p的标签

大家可以输出一下试试

2)mysqldb的使用

import mysqldb #引用库

try: #错误处理

conn=mysqldb.connect(host='localhost',port=3306,user='root',passwd='',db='wooyun',charset='utf8') #建立连接,host主机、port端口(默认3306)、user用户、passwd密码、db操作的库、charset字符编码

cur=conn.cursor() #获取操作游标

reload(sys)

sys.setdefaultencoding('utf-8') #设置编码

tmp=(title1,date1,author1[0],type1[0],corp1[0],docs) #要插入的数组

cur.execute("insert into `bugs`(`title`,`dates`,`author`,`type`,`corp`,`doc`) values(%s,%s,%s,%s,%s,%s)",tmp) #插入数据库

conn.commit() #提交操作,插入时不可省

cur.close()

conn.close() #关闭连接,释放资源

except mysqldb.error,e:

print "mysql error %d: %s" % (e.args[0], e.args[1]) #如果出错,输出错误

对于mysql不是很熟悉的同学如果有phpmyadmin的话可以在phpmyadmin中操作一下数据库,可以预览mysql语句。也可以在mysql命令行中执行语句尝试。

三.php的经验分享

虽然以前一直会php和css,但是这是第一次真正写一个动态页面。

首先对参数进行过滤。判断是否为整数数字:

if(is_numeric($_get['page'])&&is_int($_get['page'] 0)){

#code

}

php中标签的输出是这样的!

echo "

haha

";
bootstrap很好用!

推荐链接:

bootstarap基本css样式;

bootstarp组件。

php对数据库的处理:

现在版本的php不再推荐mysql函数了,建议使用pdo或者mysqli

本来想使用pdo的,想感受一下预处理。但是pdo会对参数中的某些字符进行转义。无论我怎么处理都会报错,最终我决定使用mysqli了。

//mysql建立连接

$db=new mysqli('localhost','root','','wooyun'); //localhost:3307

//sql对象错误检查

if(mysqli_connect_errno()){

echo '
error:please try again later.';

exit(); 
}

参数如上,不解释了。host有两种方式,默认端口是localhost;指定端口是localhost:3307

$query0="select count(*) from `".$kind."` where `title` like '%".$keywords."%'"; #mysql语句

$num=$db->query($query0); #执行该语句

$row=$num->fetch_row(); #取得结果

四.后记

在课业之余用了10天时间搭建完成,见识了很多扩展,很有帮助。

我的新浪微博:http://weibo.com/grt1st

项目github地址:https://github.com/grt1st/wooyun_search


网站地图