Skip to content

Instantly share code, notes, and snippets.

@phith0n
Last active December 3, 2024 08:18
Show Gist options
  • Select an option

  • Save phith0n/c23bcd7c800ced1019361d8233453601 to your computer and use it in GitHub Desktop.

Select an option

Save phith0n/c23bcd7c800ced1019361d8233453601 to your computer and use it in GitHub Desktop.
『代码审计』小密圈入圈指南

『代码审计』小密圈入圈指南

加入代码审计小密圈: https://wx.xiaomiquan.com/mweb/views/joingroup/join_group.html?group_id=2212251881

代码审计小密圈从去年11月成立至今已有近半年时间,一直没有把我们的宗旨和规则明文写出来,一是我比较懒事儿也比较多,二是我发现大家都是善良的小纯白,并没有谁是揣着恶意来到这里,所以这个事儿也不是特别急。但一直没有成文的规定总不是办法,有的新人进来后,四顾何茫茫,不领要旨,可能会觉得钱花的不值。

宗旨

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

一,知识付费的时代,赚钱不可耻,但不能辜负别人对你的信任。这是最重要的,做圈子实际上是在消耗我的品牌力,我如果不用心做,不会有其他人帮我做。

二,社区性质大于课堂性质。我还记得最早我看到小密圈里的两种付费模式,年付和永久,这两个选项我犹豫了很久,还是选择了永久。从选择了这个选项的那一刻起,就奠定了这个圈子的发展目标——更重社区。如果我选择一年,当然我只需要给大家服务一年时间,一年以后好聚好散,我也不再需要继续提供服务,但可能我精心维护了一年的社区也就因为付费期的终止而解散了。我更希望『代码审计』里的小伙伴是我终生的小伙伴,大家爱上同一门技术不容易,特别是在一轮红(乌)日(云)落下以后,那些散布在夜空中的星星,聚才能更像太阳。

三,宁缺毋滥,做高质量的代码审计学习分享。我很少去鱼龙混杂的群或社区里宣传我们圈子,只在我的微博和博客里挂了二维码,我觉得这是一个比较正确的决定,因为真正沉下心读文章的人才是我们最缺的一群人。缺,安全圈子缺人才,缺内容,却又滥,三季人泛滥,吹牛又不干实事的人泛滥。好在『代码审计』圈子里的小伙伴,有虚心的大牛,有暂时性的小白,但大家的目标都是一样的,也许是129的门槛确实筛选掉了一些我们不喜欢的人。

四,夏虫不可以语冰,井蛙不可以语海,不要和不懂的人争论,静下心搞研究。这一两年微博上安全圈子和其他圈子的一些民科吵过几次架,让我不禁反思,争吵的意义在哪里?为了说服对方,说服那种人?我希望圈子里的小伙伴,对于自己熟悉的技术,可以和同样熟悉的人交流观点,甚至辩论;但对于自己不熟悉的领域,不要妄加评议,虚心听听别人的观点,至少进行一些研究,让自己了解这个领域以后再发表观点,不要争吵。

五,严守法律当然是底线。半年内互联网爆发过几次严重的漏洞,比如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这个帖子就特别好:

Imgur

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

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

image

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

@hang333
Copy link
Copy Markdown

hang333 commented Jul 30, 2017

image
这图片 失效了?

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