Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python学习记录(九):乌云爬虫&数据 #10

Open
PyxYuYu opened this issue Mar 10, 2016 · 0 comments
Open

Python学习记录(九):乌云爬虫&数据 #10

PyxYuYu opened this issue Mar 10, 2016 · 0 comments

Comments

@PyxYuYu
Copy link
Owner

PyxYuYu commented Mar 10, 2016

There are no shortcuts to any place worth going.

0x01 Wooyun

  • 网络设计缺陷/逻辑错误
    • 任意用户名注册导致注册系统503
      • 注册抓包,将包内用户名改成已经注册过的用户,即可注册成功,导致注册系统503
  • 任意文件遍历
  • 敏感信息泄漏
    • Django启用了debug模式导致敏感信息泄漏
      0x02 知道创宇爬虫题

  • 在挑战这道爬虫题之前还需要补充点其他知识,编写一点小工具
    • 爬取Wooyun并且存入数据库中
    • 爬取所有忽略的漏洞
    • 正则匹配寻找,更加简便的方法
      • BeautifulSoup().find_all(href=recompile(正则)) 找到的是一个符合正则的列表
    • BeautifulSoup模块获取指定tag内容的方法
      • tag.get_text() 可以获取tag包含的内容,比tag.string更优秀
      • tag.string只能获取tag有且仅有一个子节点,多个子节点,就无法获取了,返回None
    • 判断抓包中的HTML返回源码是否存在某个字符串
      • urllib2.urlopen().read()中是否包含某个字符串,可以用find方法
      • urllib2.urlopen().read().find(str) 存在返回位置,不存在返回 -1
      • BeautifulSoup模块不知道是否有,用find方法寻找时会因为网页编码问题报错
    • MySQL-Python安装,PycharmProject Interpreter无法安装,因为如果你安装的是64位的Python,这里提供的只有32位的,所以需要自己去寻找64位的MySQL-Python
    • 关于在网页中寻找特定的标签的两种方法:
# 方法一:先找<a>这个tag,找到后在找href,然后匹配
# for each in BeautifulSoup(url_res(vul_public),'html.parser', from_encoding='UTF-8').find_all('a'):
#     # print each['href']
#     # 判断一下是什么类型 unicode#     # print type(each['href'])
#     # /bugs/wooyun-2016-0176846 正则匹配
#     # 会有2个网址匹配出来,带个#就只能匹配出一个了
#     url_re = re.compile(r'/bugs/.*\d{6}#')
#     # 返回的是一个列表,没匹配到返回空列表
#     each_url = url_re.findall(each['href'])
#     if each_url != []:
#         # 每个列表只有一个元素
#         # vul_list.append(each_url[0])
#         print each_url[0]
#         # 寻找忽略漏洞
#         if get_vul(each_url[0]) > 0:
#             vul_detail(each_url[0])
#         else:
#             print "Didn't find."
#     else:
#         pass
# 方法二:更加简单,直接匹配了再找
for each in BeautifulSoup(url_res(vul_public), 'html.parser', from_encoding='UTF-8').find_all(href=re.compile(r'/bugs/.*\d{6}#')):
  print each['href']
    if get_vul(each['href']) > 0:
  vul_detail(each['href'])
    else:
  print "Didn't find."</pre>
0x03 一天总结

  • urllib2.urlopen().read()中是否包含某个字符串,可以用find方法
  • BeautifulSoup().find_all(href=recompile(正则)) 找到的是一个符合正则的列表
  • 关于Wooyun爬虫需要详细的分析需求和实现过程

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant