▌宗旨

办这个圈子,脑子里有几句话,我一直奉为圭臬,在这里说一下。

  1. 知识付费的时代,赚钱不可耻,但不能辜负别人对你的信任。这是最重要的,做圈子实际上是在消耗我的品牌力,我如果不用心做,不会有其他人帮我做。
  2. 社区性质大于课堂性质。我还记得最早我看到小密圈里的两种付费模式,年付和永久,这两个选项我犹豫了很久,还是选择了永久。从选择了这个选项的那一刻起,就奠定了这个圈子的发展目标——更重社区。如果我选择一年,当然我只需要给大家服务一年时间,一年以后好聚好散,我也不再需要继续提供服务,但可能我精心维护了一年的社区也就因为付费期的终止而解散了。我更希望『代码审计』里的小伙伴是我终生的小伙伴,大家爱上同一门技术不容易,特别是在一轮红(乌)日(云)落下以后,那些散布在夜空中的星星,聚才能更像太阳。
  3. 宁缺毋滥,做高质量的代码审计学习分享。我很少去鱼龙混杂的群或社区里宣传我们圈子,只在我的微博和博客里挂了二维码,我觉得这是一个比较正确的决定,因为真正沉下心读文章的人才是我们最缺的一群人。缺,安全圈子缺人才,缺内容,却又滥,三季人泛滥,吹牛又不干实事的人泛滥。好在『代码审计』圈子里的小伙伴,有虚心的大牛,有暂时性的小白,但大家的目标都是一样的,也许是129的门槛确实筛选掉了一些我们不喜欢的人。
  4. 夏虫不可以语冰,井蛙不可以语海,不要和不懂的人争论,静下心搞研究。这一两年微博上安全圈子和其他圈子的一些民科吵过几次架,让我不禁反思,争吵的意义在哪里?为了说服对方,说服那种人?我希望圈子里的小伙伴,对于自己熟悉的技术,可以和同样熟悉的人交流观点,甚至辩论;但对于自己不熟悉的领域,不要妄加评议,虚心听听别人的观点,至少进行一些研究,让自己了解这个领域以后再发表观点,不要争吵。
  5. 严守法律当然是底线。半年内互联网爆发过几次严重的漏洞,比如s2-045,当时我严格禁止在圈子里探讨相关的话题,我不希望交流技术最后变成交换违法犯罪的心得。虽然很多人发的技术分析、POC等真的只是为了交流,但难免被恶意利用,安全知识的交流的合法性原本就很难界定,我们尽量做到避嫌。另外,对于自己,不该看的东西不看,不该赚的钱不碰,做到问心无愧。
▌规则

没有规矩不成方圆,我汇总了半年来陆续发在圈子里的一些版规,再加上之前一些不成文的约定。

  • 法律是底线,不用多说了。讨论黑产、各种灰产、擦边球等(国内国外都不行)内容的帖子一律删除,并警告发帖人,视情况禁言。注意,直接把目标站链接丢出来、直接丢源码出来、直接问xxxcms有什么漏洞,这类帖子一律视为黑产相关,没有为什么,莫须有。
  • 提问类型的帖子,只允许和代码审计相关,其他的一律删帖。比如:
    • mysql注入过滤了outfile还能不能写shell —— 这不属于代码审计相关。
    • 下图是XXCTF中的一段代码,通过id参数可以注入,想通过mysql写shell,但代码里safe函数那个正则绕不过,大家有没有思路 —— 这个问题虽然也是问mysql怎么写shell,但给出了具体代码和自己的思考,属于代码审计相关。
    • 提问请给出具体代码,并详细说明自己遇到的问题。不要像挤牙膏一样,还需要回答者和你聊半天才知道你问的什么。不给出具体代码,又不能描述清楚问题的,就算是代码审计相关问题,我也会删掉。
    • 有一些界定不明显的问题,我会稍微放宽要求。
    • 有一些问题可能和代码审计关系不大,但我觉得提问和回答的交流过程中有干货,我也会酌情保留。
    • 提问时最好带上截图,并且截全一点,有的人发截图的时候截一半,关键信息没截到,可以把你气死
    • 提问以前请搜索历史帖子,有没有相似问题,重复的问题我一般不会回答的
  • 分享类型的帖子,允许所有类型的分享。分享类型的帖子里,写出一个或多个你觉得有价值的知识点,甚至你分享完你的知识以后,同样可以提出相关问题,但这个帖子还是算分享类型。
    • 不要觉得自己分享的东西太low,毕竟圈子里的人闻道有先后、事业有专攻,每个人都有不知道的知识
    • 文字太长或图片很多,可以使用一些文本编辑软件,推荐typora和mweb,把你的东西用markdown写出来,导出成pdf作为附件上传到圈子里,这样大家看起来都方便的多。
    • 知识点不论大小,小到可以是php某个函数可能造成的某种危害,大到可以是xxx框架的代码分析连载。
  • 鼓励自己搭建测试环境(如Vulhub)进行漏洞测试,不建议找互联网案例测试漏洞,即使是经过厂商同意公开的漏洞,敏感信息也一定要打码。
  • 在一些重大安全事件(如s2-045类型的事件)期间,在外部没有其他人发表过漏洞相关POC前,圈子里也不允许发表POC,漏洞分析也要考虑清楚再发表,否则被黑产利用,后果不堪设想。
  • 圈子里发表的任何内容,在没有得到作者允许的情况下,严禁对外转载,我不希望有不愉快的事情发生。
  • 没有加入圈子的用户可以在圈子预览中看到帖子前少部分内容。如果你觉得自己发表的内容不想被外面看到,就加一个标签在帖子最前面即可。
  • 帖子不要乱加标签,如果你没用十足把握说自己的帖子加个什么标签最好,那就不要加,管理员是可以后续再给帖子补标签的。
▌一些案例

很多新人不知道怎么提问就不敢提问,我找了几个案例,说一下这些提问要注意哪些问题。

今天面试被问到一个问题:sqli时sleep()能不能写shell?当时回答是没有想到就回答了select sleep(5),'' into outfile '/var/www/1.txt';后来试了试into outfile还有limit+lines terminated by,会报错。师傅们,sleep可以写shell吗?

这个帖子就有一个问题,一是跟代码审计关系不大,但关键问题不在这里。作者说“后来试了试into outfile还有limit+lines terminated by,会报错”,报什么错并没有说清楚,也没有截图。这是一个比较典型的问题,很多人遇到错误会来提问,但提问的时候只说“报错”,错误信息是什么、错误号是多少都不说。

甚至还有更甚者,就只说“遇到xxx问题,试了试xxxx发现不行,怎么办”。“不行”这个词太宽泛了,不行是指报错了,还是指运行后没结果,还是指运行不起来,难道还要回答的人来问你吗?

有个疑问,如果使用预编译防注入后,那么还有必要过滤单双引号等危险字符吗?

这个帖子的问题,是问的太笼统了。我希望大家问问题都能具体到一个点,最好给出事例代码。比如这里问预编译是否还能注入,你应该给出你是如何预编译的,具体代码。因为正常使用预编译可以防御注入,但错误使用预编译的方法,还有一些无法预编译的位置,是不能防御sql注入的,如果你不给出具体代码,很难判断。当然,如果你只是想知道“预编译后还需不需要过滤引号”,那答案肯定是不需要,但不代表不能注入,那么这个问题也就没太大意义了。

下图这段代码有解吗?

这种类型的帖子我看到就特别想删,很典型的伸手党。你问这个问题不亚于问xxxcms有没有0day,这样的问题我甚至可能判断为黑产,因为你给的这段代码就可能来自某个cms。如果你真的想知道某段代码有没有漏洞,请你先自己分析这段代码,并写下你自己的想法,比如你觉得哪里可能存在漏洞,但为什么你没有挖出来,是因为条件绕不过还是找不到输入点,你把这些想法写下来,让大家和你一块思考,而不是伸出手来问别人要答案。

请问PHP代码审计有什么好的动态调试 分析工具吗?

这个帖子的问题在于,提问以前没有搜索,显然以前已经有多个人问过动态调试相关的问题了,直接搜“动态调试”就能看到。

再举几个正面的例子,小m这个帖子就特别好:

image

你想问大家是否有某某的技巧,那么就先分享自己收藏的相关技巧,交换思路。只有这样的分析才能持久嘛。

这个帖子,作者在评论里就做到了提出问题并说出自己对代码的解读,并且在成功解出答案以后分享出来:

image

鼓励大家提问,如果能够独立解决问题就更好,解决后分享出来让更多人受益。