[置顶] [Go] Golang 学习随笔

[置顶] [归档] IoT安全相关链接收集


请输入密码访问     继续阅读
eqqie 2021年01月26日
pwnable.tw | 0 评论

double free发生的原理:https://blog.csdn.net/swartz_lubel/article/details/79493020使用拷贝构造去解决:https://www.cnblogs.com/alantu2018/p/8459250.html     继续阅读
eqqie 2021年01月24日
Learning | 0 评论

请输入密码访问     继续阅读
eqqie 2021年01月23日
pwnable.tw | 0 评论

前言环境搭建在虚拟机ubuntu16.04下进行(vm配置开启cpu虚拟化)一般内核调试需要的东西就是内核镜像和磁盘镜像,不同版本的内核就用不同版本的内核镜像。而需要什么文件就调整磁盘镜像。安装依赖sudo apt-get update sudo apt-get install qemu git libncurses5-dev fakeroot build-essential ncurse...     继续阅读
eqqie 2020年12月14日
Learning | 0 评论

请输入密码访问     继续阅读
eqqie 2020年12月03日
pwnable.tw | 0 评论

漏洞点: 虽然给了源码但是漏洞得看二进制文件才能看出,结合flag,这是C++运算符重载相关的漏洞 edit的时候存在栈复用,可以任意指针free 漏洞原理: 正常运算符重载的写法(这里只讨论写为成员函数)需要在成员函数末尾return *this,同时返回值需要为当前对象类型的引用类型,这个返回值会作为其他运算的右值,如a = b = c,为了保证程序正常,这个值必须要存在。 如...     继续阅读
eqqie 2020年12月02日
pwnable.tw | 0 评论

漏洞利用程序Heap内存区域有执行权限,并且Add功能存在下标溢出。当使用负数下标时可以覆盖got表项指针指向堆内存,从而执行自定义shellcode。但是堆块输入限制非常大,只有8个字节,而且要求全为大小写字母或数字。也就是说需要用多个堆块借助拼接构造shellcode。为了简化利用,先构造调用SYS_read的shellcoed,然后借助它往堆上读执行execve("/bin/sh", ...     继续阅读
eqqie 2020年11月10日
pwnable.tw | 0 评论

思路: Autor未设置截断导致heap泄露,strlen重设长度时包含下一个chunk的size导致溢出; 进行house of orange释放原先的topchunk进入unsortedbin(进入过程可以借助scanf中malloc分配缓冲区来完成),以此可以泄露libc; (关键)unsortedbin attack攻击IO_list_all,使其的指针指向main_arena...     继续阅读
eqqie 2020年11月08日
pwnable.tw | 0 评论

一道google题golang相关一些特性 golang默认是静态编译,而且系统ASLR不作用在goroutine自己实现和维护的栈上。从这题上看,main调用了hack,所以对hack的改动不会影响main中数据在栈上的偏移。只要先在本地计算出hack第一个变量和flag之间的偏移,就可以计算出远程环境中flag在栈上的位置。 goroutine的模型大概如下(知乎看到的): ...     继续阅读
eqqie 2020年10月27日
writeups, Golang, Learning | 0 评论

之所以记录这题是因为一开始我忽略了两个很朴素的方法组合在一起所造成的地址泄露技巧——bss任意写+0x20字节输出+伪造堆块。被常规思维束缚(平时比赛的恰饭题千篇一律也是一个原因)的我老想着找办法去打stdout,然而对于free次数的限制根本不允许我这么做。于是转念一想,既然不能泄露有libc地址的地方,我可以通过伪造大堆块并释放,让地址出现在bss上我可以输出的部分。题目分析思路EXPf...     继续阅读
eqqie 2020年10月15日
pwnable.tw | 0 评论

不愧是pwnable,又让我见识到了极致的技巧利用...前置知识关于reallocrealloc原型是extern void *realloc(void *mem_address, unsigned int newsize); 第一个参数为空时,realloc等价于malloc(size) 第一个参数不为空时 若mem_address被检测到不是堆上的地址,会直接报错 若me...     继续阅读
eqqie 2020年10月14日
pwnable.tw | 0 评论

原writeup把思路写得非常详细,这里不赘述了,提取一些巧妙的攻击思路分析和学习就行 https://hxp.io/blog/77/0CTF-Finals-2020-babyheap/前置原题当时看了一下不太有思路,没有继续写下去。这题用了比较新的Glibc2.31,所以很多机制不太一样,利用手段需要改进,所以题面才会说“要更新你的技巧了”(好real的pwn,我喜欢,虽然我不会...)u...     继续阅读
eqqie 2020年09月29日
writeups | 0 评论

2020年 第三届全国中学生网络安全竞赛初赛初赛终榜blind思路 这是一道签到盲pwn,用于getshell的函数地址已经给出,只需要循环爆破栈溢出字节数即可 通过观察发现,如果发生了栈溢出再输入#exit会没有stopping提示而直接重启服务,说明栈被破坏了,以此可以确定是否达到所需字节数 源代码#include<cstdio> #include<cstdlib>...     继续阅读
eqqie 2020年09月25日
writeups | 0 评论

从这题学到很多之前不太注意的地方,因此还盘点了一下C语言程序运行的整个流程,正所谓 ctf for learning(x前置知识从Hello world开始Hello world简单吗?写起来简单,但是要解释清楚却很难。下面用一个helloworld程序静态编译(x64)作为例子讲解简单C程序的运行流程。//gcc helloworld.c --static -o helloworld #...     继续阅读
eqqie 2020年09月25日
pwnable.tw | 0 评论

safebox题目文件pwnlibc.so分析这个题感觉挺经典的,分配堆时存在一字节溢出。且只能在分配时写入,不能修改,不能打印堆块内容。整理一下大致的思路,因为需要写malloc_hook或者free_hook,可以尝试先利用_IO_FILE_stdout泄露地址。既然需要泄露地址那就需要构造unsortedbin和伪造tcache(这里是难点)。主要构造方式参考了sad师傅的思路:利用u...     继续阅读
eqqie 2020年08月08日
writeups | 0 评论

使用Nginx反向代理Flask静态资源 环境:Ubuntu 18.04实现原理如果flask项目里面有大量静态资源,可以尝试使用Nginx代理对静态资源的请求,把真正的动态请求转发给Flask。比如: flask在127.0.0.1监听8001端口,而Nginx配置为监听0.0.0.0的8000端口,那么在外部请求hostname:8000时就会把动态请求转发到8001上,而静态资源请求则...     继续阅读
eqqie 2020年07月30日
Learning | 0 评论

z3作为微软开发的求解器,其提供的接口在很多应用程序和编程语言中都可以使用。 > z3prover在CHAINSAW和NAVEX中均有使用 在这里关键的作用是想要配和CodeQL,通过CodeQL提取路径约束,然后用Z3求解约束 其实关于如何用CodeQL提取出可以作为z3输入的约束还是一头雾水...但是这不妨碍先学习z3的使用,说不定可以找到一些灵感完成两者的结合...     继续阅读
eqqie 2020年07月19日
Learning | 0 评论

官方文档:https://help.semmle.com/QL/learn-ql/python/pointsto-type-infer.html中文翻译:https://github.com/xsser/codeql_chinesePython-CodeQL中抽象语法树相关的类Abstract syntax tree AstNode > - Module – A Python ...     继续阅读
eqqie 2020年07月14日
Learning | 0 评论

解题思路综合了wp和比赛时的思路,做了一点简化CoolCode这题一开始粗心了,没看见有个逻辑漏洞导致可以绕过可见字符判断,但是在这种情况下sad师傅还是吧shellcode构造出来了,实属牛批…..分析 add功能在bss段保存堆指针,但是没限制index可以为负数,导致可以覆盖got表为堆指针 add功能在读取输入的时候会用一个函数检查输入中是否包含了非数字和大写字母内容,如果有则调用e...     继续阅读
eqqie 2020年07月14日
writeups | 0 评论

转载自: https://www.cnblogs.com/wuhh123/p/10668609.html什么是LLVMLLVM项目是模块化、可重用的编译器以及工具链技术的集合。美国计算机协会 (ACM) 将其2012 年软件系统奖项颁给了LLVM,之前曾经获得此奖项的软件和技术包括:Java、Apache、 Mosaic、the World Wide Web、Smalltalk、UNIX、E...     继续阅读
eqqie 2020年06月26日
Learning | 0 评论