灵活布置、可二次开发的乌云公开漏洞及知识库搜索
来源:互联网 发布:mac制作win7安装盘教程 编辑:程序博客网 时间:2024/04/30 11:23
*本文原创作者:grt1stnull,本文属FreeBuf原创奖励计划,未经许可禁止转载
感谢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 "<p style=\"display:inline-block;\">haha</p>";
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 '<br>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
*本文原创作者:grt1stnull,本文属FreeBuf原创奖励计划,未经许可禁止转载
这些评论亮了
- 灵活布置、可二次开发的乌云公开漏洞及知识库搜索
- 乌云漏洞库/知识库离线下载
- [python] 爬取乌云知识库的标题
- 乌云多数已修复SSRF漏洞可被绕过
- 乌云 漏洞 apkbus api
- 黑云压城城欲摧 - 2016年iOS公开可利用漏洞总结
- 2016年ios公开可利用漏洞总结
- CVE漏洞知识库介绍
- 乌云漏洞笔记1-任意文件读取
- 用calibre抓取乌云知识库并生成电子书
- SQL注入速查表(上)-- 乌云知识库转载
- 可扩展性构建灵活系统的思考
- 个人收藏的资料链接及知识库
- 灵活使用Google的代码搜索
- VC知识库搜索ADO
- 支付宝曝重大漏洞:交易记录可被搜索
- 乌云于 2014 年 02 月 17 日爆出支付宝登陆漏洞,该漏洞会对用户余额宝产生怎么样的影响或者是危害?
- 乌云背后的幸福线
- translate与REGEXP
- codeforces 501C (拓扑排序另类)
- Spark 2.0系列之SparkSession详解
- js回车键实现登录
- 从AVFrame中取出音频裸数据到一个buffer中
- 灵活布置、可二次开发的乌云公开漏洞及知识库搜索
- 血的教训···········复用那些事
- tomcat跑到一半不动了
- IOS 核心动画之CAKeyframeAnimation
- 自定义TabBar条,实现重写TabBar的TabBarItem,然后在中间额外加一个按钮
- Ajax学习笔记
- Objective-C-iOS常用小控件(UIAlertView)警告框
- Activity的setContentView()方法源码分析
- 手掌与拳头检测
已有 14 条评论
点个赞
能搞个docker版的不
可惜了,乌云关闭的锅我觉得该PR背,早在zf那边打点好,把利益拴在一起,根本就没这事了
@ CNZ 这就是夜壶的故事,用的时候需要,不用的时候嫌脏。所以说说翻脸就翻脸太正常了
其实我是来看mysqldb的断线重连的
@ DragonEgg 我是每次写入前再建立连接,所以没断线过。你倒是提醒我了可以在开始处建立连接,添加中途断线处理,如果这样效率更高我会考虑这种方法的。
@ grt1stnull 可以用ping()自己判断
import MySQLdb
def connect():
conn = MySQLdb.connect(user="root",passwd="12345",host="localhost",db="test")
return conn
c = connect()
def xxx():
global c
try:
c.ping()
except:
c = connect()
不错不错,吧drop搭起来!
我还是喜欢这样的
我就是通过这条微博找到你的…23333
听上去不错
https://github.com/CaledoniaProject/wooyun_offline_ui … 楼主累不累
感谢关注[doge]
很早就有人把乌云爬下来并存档放在互联网