拖了好久,终于趁着休息的时候简单总结一下第一次hw学习到的东西。(应该也是最后一次)
前期准备资产梳理与排查在hw前期,需要梳理防护单位的资产,比如哪些服务器是用来做什么的,网络拓扑结构,有哪些防护设备,防护设备都开启了哪些设置。对于不重要的服务和业务应该尽可能的关闭,减少攻击者能利用的攻击面。同时排查现有服务器中是否存在漏洞和过去遗留下的后门木马。
防护设备配置在完成资产的梳理和排查之后,需要对相关的业务做防御加强,配置相关的WAF和防火墙过滤攻击流量。然后配置探针获取外网到内网以及内网之间的流量数据,这些流量数据搭配一些日志分析平台,监控网络攻击的实时情况,同时流量数据也能为之后的溯...
文章首发于安全客 https://www.anquanke.com/post/id/238363
前言之前面试被问到了内核安全机制的相关问题,但是没有很好的回答出来,所以在此以学习的目的总结这方面的知识。欢迎各位师傅一起交流讨论。
防御框架说到Linux内核防御就不得不提起那张广泛流传的Linux Kernel Defence Map。这里放出两个不同版本的对比图,可以看到新版本中又对老版本的地图做了一些修改和添加。新图在老图的基础上修改了一些语言描述,并且调整了排列顺序,增加了ARM,Intel的硬件防护,clang的CFI,PAX_RAP。所以这里我会按照新图的顺序来讲解。
这个...
文章首发于安全客 https://www.anquanke.com/post/id/224972
前言打了安恒举办的西湖论剑比赛,题目都是跑在一个开发板上的,通过数据线连接开发板的otg接口能访问题目环境。pwn题目一共有三道,其中有一道题目因为逻辑上的问题导致能比较简单的获得flag,另外一道题目是boa服务器在处理http认证过程中,发生栈溢出。我们这里分析的是这次比赛的第三道pwn题ezarmpwn。
题目分析通过file和checksec能够知道程序为32位的arm小端程序,开启NX保护,没有PIE和canary保护。
主办方给出的libc为2.30,把libc解压的文件夹和题...
这周打了一下ByteCTF,发现差距还是很大的,现在的很多堆菜单题都上2.31,新版本的题目需要多熟悉熟悉。
分析checksec保护全开,逆向的时候发现其中有prctl函数,用seccomp-tools查看沙箱逻辑。
看这个逻辑只能使用orw的方法获得flag。整个程序主要由三个功能,射击子弹,上膛子弹,购买子弹,购买子弹会malloc,同时有一次向chunk写数据的机会,购买的子弹会通过一个18字节大小的数据结构管理。chunk指向分配的堆块,next指向其他堆块形成一个链表,flag是标志位分别有0,1,2,表示不同的状态。
12345struct { char*...
第一次打final 被打的头都炸了,555555。过去三周了,还是水一下这道签到题。
题目情况作者搞到了一个ruby的jit——rubi,其中打了patch,让执行代码的区域变成不可写的情况。
12345678910111213141516diff --git a/engine.c b/engine.cindex 79e83d2..2350d59 100644--- a/engine.c+++ b/engine.c@@ -137,6 +137,11 @@ static int execute(char *source)init();lex(source);parser();+ long ...
受到摸鱼和各种项目压力之后,终于发出来了,这次是强网杯中强网先锋的4道pwn题,剩下的pwn题还在陆续复现ing,在做了在做了ing
babymessage一道神奇的栈溢出题目,有三个功能,写name,写message,输出buf,其中message的数据会被strcopy到buf上。这里的溢出点是在写message的功能上,一开始只能够溢出16字节,覆盖掉栈变量+rbp的值。这里如果只是看反编译的代码是看不出问题的,一定要观察汇编代码,这也是我经常失误的地方不太爱看汇编,555555。
这里的写message的函数里带着一个局部变量size,而这个变量因为是局部变量,它是受到rbp的值...
b00ks这是一道asis ctf 2016的题目,主要功能是书本记录,除了基本的书本的增删改查功能,还有一个作者名称的改变。程序是一个基本保护除了canary其他全开的64位程序。
调试写exp的过程参考了ctf-wiki,先知社区一篇文章,和另外一个博客。很多细节上面的文章已经写的很详细了,我补充一些其他细节点。
这里漏洞的问题是出现在程序自定义的读取函数中,在读完规定长度的数据之后又会在末尾填一个0,这样就会溢出一个空字节。这种漏洞被称为OBO(off by one),这里一共使用了两次,第一次是先把作者name全部填满,这样溢出的0字节就在下一个区域中,随后这个程序有一个管理全局...
博客长草严重,上半年摸鱼太久。最近趁着有空开始复现之前的一些题目,这次做了2020RCTF的几道pwn题,本来还想着把MIPS那道题做出来再发,结果发现MIPS的调试还有很多问题,所以就先发常规一点的题。
note最经典的菜单堆题,还是note管理系统。64位程序,保护全开。主要功能有new,sell,show,edit,经典的增删查改,除了基本功能之外,还有两个额外的功能,一个是super note,一个是越界写数据但是只能操作一次。
这个题的super note是个幌子,最后完全没有用到。它的数据结构是三个部分组成,开头是一个指针指向我们申请的message区域,第二块是size,表...
一开始只是抱着开阔视野的心态来的,想着算法是IT行业哪里都会用到的东西,学完之后觉得卜老师不愧是教了13年的老师,很多地方都很受益,虽然不是专门做算法的,其中的很多思想都对以后的工作有一定启发。
观察问题的角度问题的可分解性想要解决一个复杂的问题,我们首先从这个问题最简单的实例入手,这个最简单的实例能用什么方法解决?复杂的问题能不能分解成简单的问题?
可行性解的形式以及解之间的变换关系问题的可行解的形式是什么?可行解的总数有多少?可行解能否一步一步的逐步构建出来?我们能否对一个可行解施加小幅度的扰动,将它变成另外一个可行解?
类似的问题和给定的问题类似的问题有哪些?解决类似问题的算法能够...
记录一下,我在docker容器中配置Mysql时遇到的坑,以及处理过程中学到的知识。
起因最近作业量多,任务重结果还是被点名出题(哭唧唧),没办法只能硬着头皮上。有了出题思路之后,和@wh1t3Pig交流之后得知需要使用docker-compose来布置出题环境。啥?卧槽?不能手动布置吗?算了,就当做是对我的考验。所以我开开心心的写好源文件之后,开始准备布置环境,那么到底是直接拉个Mysql,还是直接在容器内部装?在内部装又有各种问题。。。这里就把这些坑记录下来造福后人,同时也有一定的分析。
web server+mysql or in one container?在参考多个知名项目和比...