对docker学习进行的小总结
因为打CTF pwn题的时候,经常遇见本地程序的libc与远程服务器那边程序所依赖的libc不匹配的情况,尽管可以用patchelf和glibc-all-in-one来给程序patch一个libc。但是patchelf似乎有点小bug,为了防止比赛的时候在这个地方掉链子,因此可以采用在docker里跑不同版本的ubuntu。
同时随着时间的推移,自己也从一个拉跨的做题人偶尔客串了一下拉跨的出题人,因此需要打包一个题目环境,还得学习一下docker的几个基本配置文件。
本文是对我学习docker做了一个简单的小总结。
patchup--命令行小工具
关于gdb源码调试环境搭建
有时候我们要去追踪一些函数或是数据,需要用gdb动态调试并去结合着源码分析。下面介绍一下gdb源码调试的环境如何搭建
关于学习arm架构下的pwn的总结
通过这段时间对于arm架构的题目学习,自认为收获还是不少的。下面是对于这段时间关于arm架构的pwn题学习所进行的总结。
关于ubuntu18版本以上调用64位程序中的system函数的栈对齐问题
有时候在做64位题目的时候会发现exp也能执行到 system(“/bin/sh”),但就是获取不了shell。然后通过gdb调试发现是在最后的system函数执行到内部的时候卡住了,然后就满脸疑惑,这也能卡???
一次简单的远程Getshell(在目标机上开启一个shell)
关于ret2_dl_runtime_resolve的学习总结
延迟绑定整体流程图
下面主要解释_dl_runtime_resolve这个函数运作时的情况,而延迟绑定的整体流程就不详细说明了,具体的流程可以参考下面这个流程图(这个我也忘记是哪个师傅做的了,很久之前收藏了这个图片)
而Linux中最终完成动态链接的函数进行重定位的是在_dl_runtime_resolve(link_map_obj, reloc_index)函数中完成的,如果再详细一点就是_dl_runtime_reslove函数调用了_dl_fixup函数,然后_dl_fixup函数调用了_dl_lookup_symbol_x函数,最终这个函数去动态库里面找到了我们此刻进行延迟绑定的函数,并且把它的地址填写到了got.plt表项中。这里主要详细讲一下_dl_runtime_resolve函数的运作流程
关于SROP的学习总结
这个SROP是一种极其有趣的攻击方式,它是利用程序从内核层面切换到用户层面恢复上下文时的一个漏洞,该漏洞可以让我们自己自行设置所有寄存器里的值。