知道创宇研发技能表v2.2

2014/3/9 发布

by @知道创宇(www.knownsec.com) @余弦 & 行之

知道创宇是国内Geek十足且普遍被认为特别有前途的互联网安全公司,

动态请关注微信公众号:Lazy-Thought

  • 说明
    • 本技能表为知道创宇研发工程师必备技能
    • 聪明的人会根据每个tip自驱动扩展
    • 不聪明的,坐等别人手把手的人请绕行,不仅不适合知道创宇,也不适合任何有Geek精神的公司
    • attach 
      附件标志是我们推荐的附加资源,感谢资源提供者
  • 通用技能
    • 公司与个人
      • 公司是盈利性组织
      • 个人和公司必须双赢
      • 工作
        • 在认同公司理念且能够给公司创造足够价值的基础上,为个人发展而工作
    • 沟通、反馈、责任
      • 一个无沟通能力的人,要么是天才,要么是不可爱的人
      • 反馈要及时
        • 避免出问题不反馈,影响进度
        • 方式
          • 正式的:邮件
          • 临时的:QQ等即时通信
          • 礼貌的:给个电话、短信
      • 工作有大小,责任心无大小
      • 周报的透明
        • 意义:大家互相了解工作与心得,有利于自己的判断与成长
        • 不是单纯的给领导汇报工作
    • 任务四象限,决定优先级
      • 紧急重要
      • 重要不紧急
      • 紧急不重要
      • 不紧急不重要
    • 新事物的敏感性
      • 保持好奇心
      • 不要局限在自己的圈子,适当跨界吸收灵感
      • 订阅国内外优秀博客/资源,鲜果RSS阅读不错
        • 英文很重要
      • 选择性参与一些必要的会议,听必要的主题,讨论必要的话题
    • 成长
      • 对知识的渴望程度决定了前进动力的大小
        • messagebox_warning 
          BT常说:「做人一定要狂热!」
        • messagebox_warning 
          我说:「一定得贪婪!」
      • 不要矫情,不要浮夸!
      • 和比你厉害的人在一起,和一流的人工作
        • 指点往往是精华
        • messagebox_warning 
          杜绝笨蛋爆炸
          • 二流的人招进来的人不太可能是一流的
      • 思考
        • 批判性思考
        • 换位思考
      • idea 
        提问的智慧
        • 遇到问题先独立思考,尽最大努力后再提问
        • http://www.wapm.cn/smart-questions/smart-questions-zh.html
      • idea 
        小事心态
        • 越基础的事越关键,需要越细心
        • 不要一味盲目追求「高级感」,而忽视「小事」/「简单事」/「基础事」
        • 基础不牢、地动山摇
        • 小事做不好,别提大事
      • idea 
        任务拆分
        • 成长过程会经历:能力越大、责任越大、事情越多
        • 思路
          • 拆分细化为多个点
          • 排好优先级
             Arrow Link
          • 加入时间维度:何时完成什么
             Arrow Link
          • 是否需要寻求帮助,谁能帮你,自己单干?
             Arrow Link
          • 任务是否可以切换/并发
          • 自己欠缺什么,立马发现
      • idea 
        方法论
        • 完成一件事有好几条途径,优秀的人的途径最短
        • 任务拆分很容易得出做事的方法论
        • 好的「方法论」会让你具备更强的「创造力」!
          • idea 
            时刻问自己:「是否具备创造力?」
    • 牛人姿态
      • 即使现在不是牛人,也得具备这样的姿态
      • 这种感觉只能意会
      • 没有一定扎实内功与远见的人很少有这样的姿态
    • messagebox_warning 
      完成的定义
      • 比如写个POC
        • 1. 搞懂了目标Web应用漏洞的原理
        • 2. 熟练运用Python各相关模块与机制
        • 3. 熟练了解了HTTP协议
          • HTTP请求
          • HTTP响应
        • 4. 代码写得够规范,让人看起来就是爽
        • 5. 程序经过足够的测试
          • 黑测试
          • 白测试
        • 6. 及时反馈进度
          • 我遇到困难了
          • 我搞定了
        • 7. 更新相关文档,沉淀
    • messagebox_warning 
      熟练的定义
      • 比如熟练SQL注入
        • SQL语句这门“语言”能脱离文档顺手写出
        • 主流数据库的SQL特有函数、存储过程、机制我都了如指掌
          • MySQL
          • MSSQL
          • Oracel
          • Postgre
          • Access
          • SQLite
          • ...
        • 牛逼的工具我不仅用的顺其自然,源码还读过几遍,我能修改
          • sqlmap
          • ...
        • 我具备创造性,而不仅仅是跟在大牛身后
          • 研究出了几个不错的技巧
          • 发了几篇不错的Paper
          • 对外会议/沙龙等进行了几次分享
          • 写出了自己的相关工具,爽
        • 我实战了N回,遇到了很多奇葩环境,我有足够的信心绕过
        • 以上这些之后,这才叫熟练!其他同理
    • 好书推荐
      • 推荐理由
        • 打通任督二脉的书,怎能不看?
        • 任何科学研究最终必须至少到哲学层面,触碰到上帝的脚
        • 具体技术类书籍请见“专业技能”相关部分
      • 鸡汤类
        • 黑客与画家
          • 印象深刻:设计者的品味
            • 好设计是简单的设计
              • 抓住本质
            • 好设计是永不过时的设计
              • 如果解决方法是丑陋的,那就肯定还有更好的解决方法,只是还没有发现而已
            • 好设计是解决主要问题的设计
            • 好设计是启发性的设计
            • 好设计通常是有点趣味性的设计
            • 好设计是艰苦的设计
            • 好设计是看似容易的设计
            • 好设计是对称的设计
            • 好设计是模仿大自然的设计
            • 好设计是一种再设计
            • 好设计是能够复制的设计
            • 好设计往往是奇特的设计
            • 好设计是成批出现的
            • 好设计常常是大胆的设计
        • 浪潮之巅
          • 感受IT帝国的崛起与没落,我们现在站在又一个互联网浪潮之巅
      • 洁癖类
        • 重构
        • 代码整洁之道
        • 代码大全2
        • 数学之美
      • 敏捷类
        • Rework中文版
          • 37signals团队的敏捷经验
        • 高效程序员的45个习惯
      • 产品类
        • 人人都是产品经理
        • 结网
      • 神书
        • 自私的基因
        • 失控
        • 万物由来
      • ...
  • 专业技能
    • idea 
      原则
      • 至少完整看完与练习好一本书
      • 至少过一遍官方文档
    • bookmark 
      基础必备
      • HTTP抓包与调试
        • Firefox插件
          • Firebug
            • 抓包与各种调试
          • Tamper Data
            • 拦截修改
          • Live Http Header
            • 重放功能
          • Hackbar
            • 编码解码/POST提交
          • Modify Headers
            • 修改头部
        • Fiddler
          • 浏览器代理神器
          • 拦截请求或响应
          • 抓包
          • 重放
          • 模拟请求
          • 编码解码
          • 第三方扩展
            • Watcher
              • Web前端安全的自动审计工具
        • Wireshark
          • 各种强大的过滤器语法
        • Tcpdump
          • 命令行的类Wireshark抓包神器
        • Python
          • urllib2
            • 打开请求响应调试
              • 编辑urllib2的do_open里的h.set_debuglevel
              • 改为h.set_debuglevel(1),这时可以清晰看到请求响应数据,包括https
      • 什么是跳转
        • 服务端跳转
          • 302
            • <?php header("Location: 3.php"); ?>
          • 301
            • <?php header("HTTP/1.1 301 Moved Permanently"); header("Location: 2.php"); ?>
          • u=urllib2.urlopen(url)后,u.url能得到服务端跳转后的地址
            • urllib2自己的特性
            • 所谓的会跟进去
        • 客户端跳转
          • <meta http-equiv="refresh" content="0; url=http://www.evilcos.me" />
            • htmlparse解析就行了
          • location.href="http://evilcos.me";
            • 正则(弱),js引擎(王道)
      • Python编码规范
        • attach 
        • 入门书
          • Python核心编程2
            • 第4章 Python对象
              • 完整熟练
            • 6.8 Unicode
              • 完整熟练
            • 8.11 迭代器和iter()函数
              • 完整熟练
            • 第9章 文件的输入和输出
              • 完整熟练
            • 第10章 错误和异常
              • 完整熟练
            • 第11章 函数和函数式编程
              • 完整熟练
            • 第12章 模块
              • 完整熟练
            • 第14章 执行环境
              • 完整熟练
            • 第15章 正则表达式
              • idea 
                完整熟练
            • 第18章 多线程编程
              • 完整熟练
            • 20.2 使用Python进行Web应用:创建一个简单的Web客户端
              • 完整熟练
      • Office能力
        • Word文档编写,看去要专业,尤其对外的
        • Excel里面大量的统计、图表功能,需要善于使用
        • PPT演讲、培训等必备,如何做好PPT?百度一下……
        • ksmiletris 
          进一步
          • yEd
          • Visio
          • FreeMind
            • 本技能表就是这个制作
      • 熟练VIM
      • 算法
        • 快排
        • 二分
      • 正则表达式
      • 研发能力
        • 瀑布模型
          • 需求->需求分析->设计->开发->测试->上线->运维/运营
        • idea 
          需求分析能力
          • 给你一个需求,如何给出一个优美的执行思路——方法论
          • 这个能力非常非常非常的关键
        • 调试能力
          • 只要定位出,就没有解决不了的Bugs
          • 肉眼看到的都是假象
            • 一定要专业的工具与经验配合
          • Bugs在哪出现,最终就在哪进行真实模拟调试
          • 缩小范围
            • 构建自己的测试样例
              • 排除网络复杂未知情况
            • 关联模块一个个排除
            • Python单步调试
              • import pdb;pdb.set_trace()
              • 在需要单步调试的地方加上面这句,运行程序后中断在此,然后h查看指令进行一步步细细调试
            • 粗暴调试:print
        • 敏捷思想
          • 快速迭代
          • 任务拆细
          • v1原则:定义好v1的目标,快速完成v1为优先
          • 习惯Wiki记录,利于沉淀与分享
      • FQ
    • Web安全
    • 研发清单
      • 编码环境
        • pip
        • Vagrant
        • tmux/screen
        • vim
        • zsh + oh-my-zsh
        • Python2.7
        • >Django1.4
        • web.py
        • node.js
        • Ubuntu/Gentoo/Centos
        • ipython
        • 版本控制
          • git/svn
          • gitlab
        • Nginx+uWSGI
      • Python
        • 官方手册
          • 至少过一遍,这都没过一遍,视野会局限
          • 行之说:「我没看过Python的书,却熟读官方手册……」
      • Linux
      • 前端
          • JavaScript DOM编程艺术
        • 了解DOM
          • 这同样是搞好前端安全的必要基础
          • jQuery
            • 优秀的插件应该体验一遍,并做些尝试
            • 官方文档得过一遍
          • ECharts
            • 来自百度
          • Google API
          • ZoomEye Map组件
            • ZoomEye团队自己基于开源的打造
          • AngularJS
            • Google出品的颠覆性前端框架
          • Bootstrap
            • 应该使用一遍
      • 爬虫进阶
        • 代理池
          • 爬虫「稳定」需要
        • 网络请求
          • wget/curl
          • urllib2/httplib2/requests
          • idea 
            scrapy
        • 验证码破解
          • pytesser
      • 调度
        • crontab是最原生的定时调度
        • 基于redis实现的分布式调度
        • 基于rpyc实现的分布式调度
        • celery/gearman等调度框架
      • 并发
        • 线程池
          • 进程内优美的并发方案
        • 协程
          • 进程内另一种优美的并发方案
        • 多进程
          • os.fork
          • idea 
            multiprocessing
      • 数据结构
        • JSON
        • cPickle
        • protobuf
      • 数据库
        • MySQL
        • MongoDB
        • Cassandra
        • Hadoop体系
        • Redis
        • Sqlite
        • bsddb
      • DevOps
        • SSH证书
        • Fabric
        • SaltStack
        • puppet
        • pssh/dsh
      • 调试
      • 算法
      • 持续集成
        • 自测试
          • nose
        • Jenkins
      • 协作
        • 类似Trello的在线协同平台
        • 微信
        • 立会
    • 设计思想
      • 人人都是架构师:具备架构思想是一件多酷的事
      • 实战出真知
      • 如何设计
        • attach 
        • 松耦合、紧内聚
        • 单元与单元属性
        • 生产者与消费者
        • 结构
          • 队列
          • LRU
        • 分布式
          • 存储
          • 计算
        • 资源考虑
          • CPU
          • 内存
          • 带宽
        • 粗暴美学/暴力美学
          • 大数据,先考虑run it,然后才能知道规律在哪
          • 「run it优先」能快速打通整体,洞察问题
          • 「run it优先」能摆脱细节(繁枝末节)的束缚
          • 「run it优先」能快速迭代出伟大的v1
        • 一个字总结
    • 优质资源
    • 牛人1,2,3
      • 1研究:研究东西,有足够洞察力,研究水准不错
      • 2研发:hack idea自己有魄力实现,不懂研发的黑客如同不会游泳的海盗
      • 3工程:研发出来的需要实战、需要工程化,否则只是玩具,而不能成为真的武器