随笔分类 - CTF
摘要:在逆向一些x64的代码时,会发现有一小段汇编代码理解不了,这个时候回想,要是能单独执行这一小段汇编就好了。现在我就介绍一个我的解决方法:很小汇编一段代码,但是不好理解,我就把它单独写成了一个函数,供c语言调用,这样下来执行个几次,就大概知道意思了。 当然了,完全可以设置rip/rdi/rsi/rdx/rcx/r8/r9等寄存器为想要的值后执行即可,这是另外的一种方法。 ...
阅读全文
摘要:(以前为给同学分享写的点东西,很基础。)现在的比赛中堆溢出非常常见,对于glibc下malloc的理解也要深入一些。 malloc_chunk的对齐属性 在glibc中,malloc_chunk以 2*sizeof(size_t)对齐,在32位系统中以8字节对齐,在64位系统中一般以16字节对齐。M
阅读全文
摘要:很久很久前写的。越来越意识到作为一名科班出身的学生的重要性。 自己在使用IDA时,发现F5产生类似的这种代码。 其中有一句,v5 <= -141920797,我在想为什么是负数。如果把-141920797化为16进制,如下图: 为什么不是比较的无符号数0xab3f35e3? 看一下对应的汇编代码,如
阅读全文
摘要:Crackhash 这个题目是我为月赛出的,完全仿照自mma 1st simple_hash。 这道题目比较有意思的地方在于在32位的程序中模拟了64位的算术运算。 题目的思路很清晰。要求输入全为数字,然后对输入的数字求hash值并判断是否正确。如下图: 所以关键的部分就在于cacl_hash这个函
阅读全文
摘要:自从上一次ZCTF做了一道ARM64的逆向题目后,我决定记录下利用qemu搭建ARM64的环境的过程,以后肯定会遇到更多ARM平台下的Reverse和PWN。 一 安装QEMU 我要模拟的是64位的ARM环境,所以需要使用的是qemu-system-aarch64。在kali下,使用apt-get
阅读全文
摘要:Re300-arm64 是一个64位的ARM程序。使用IDA加载,蹦出来这个框框,就是说IDA6.6还没有对ARM64位的程序实现relocation的分析。 就是由于这个,所以连对libc库函数的调用都看不到了。如下图是start函数: 连__libc_start_main都看不到了,此外,程序里对strlen,malloc,memset,scanf等库函数的调...
阅读全文
摘要:Welpwn很久以前的了,现在整理一下题目的漏洞很明显,就是一个栈溢出。程序打开了NX,却没有给libc。重点是,在向栈上拷贝数据时,如果输入中含有'\x00',会被截断,对利用漏洞造成了困难。虽说被'\x00'截断但是还是能将返回地址覆盖。以前曾见到一篇名为return to dl_resolve...
阅读全文
摘要:上次的月赛中,遇到了一个经典的MS08-067的漏洞,这是一个经典的教科书的漏洞。但是仅限于使用metasploit来攻击这个漏洞。现在我想简单写一些关于139和445端口的东西。 首先提到的是NetBios,NetBios是Network Basic Input/Output System的缩写,提供了一种允许局域网内不同电脑能够通信的功能。严格来说,NetBios是一套API,而并不是一个网络...
阅读全文
摘要:前些日子在月赛中,拿到了一台Ubuntu14.04的服务器,但并不是root权限,需要提权。我Google了一下,找到了CVE-2015-1318,CVE-2015-1328,CVE-2015-1338这些可以用来提权的CVE和POC。当我用CVE-2015-1328来提权时,并没有成功,我当时就想知道我这台服务器到底打没打上这个CVE的补丁呢? 后来,我在网上查了下,稍微琢磨了下...
阅读全文
摘要:(很久以前做的,现在发一下)最近做了两个CTF,水平太渣,做了没几道题,挑几个自己做的记录一下。 mma ctf 1st 之 rps: 1 from socket import * 2 s = socket(AF_INET, SOCK_STREAM) 3 s.connect(('milkyway.c
阅读全文
摘要:发现一篇写得更好的:http://insight-labs.org/?p=2009 程序要求输入一个flag。拿ida加载后,发现是Upx壳,脱壳后加载入ida进行分析。定位到输入flag的地方,如下图:在od中在0x401455处下断点,执行到此。继续f8执行下去,发现程序来到一块不在程序代...
阅读全文
摘要:记录下两个逆向的writeup,第二个还是有点费事的。Re elf 题目比较简单,算法也很简单,求用户名为ctfking的注册码。 注册码需要满足条件: 1. 全是数字 2. 长度10的倍数 3. 由serial经过算法生成的serial_gen和由用户名ctfking生成的name_ge...
阅读全文
摘要:一天的成果。Re300 是男人就下一百层 一个64位的程序,放到IDA里的话,IDA就会分析不动,这样就把人给下着了。objdump –d re300 > output,这样拿到汇编代码,大概在120M左右,代码量很大。 拿到vim里分析,发现代码很简单,读入数据后,一直在判断判断输入数据的...
阅读全文
摘要:代码的执行时间挺长的,好囧! 参考了https://13c5.wordpress.com/2015/04/20/plaidctf-2015-png-uncorrupt/的代码 通过这个题目,也对Png文件格式更深入地理解了! 使用这个代码的前提是将png signature里面的0x0a修...
阅读全文
摘要:二进制代码分析报告(好水的一个破解) 第一步,language.exe检测出程序加壳,经过Aspack加壳。 第二步,AspackDie.exe脱壳 第三步,language.exe检测脱壳后的程序,发现该程序是使用Delphi编写的。 第四步,将脱壳程序拉入IDA,通过ViewsàStri...
阅读全文
摘要:具体原理不清楚,在网上找了找,记录下。 第一步:将ida.cfg中cpp866 version的AsciiStringChars注释掉,把full version的AsciiStringChars取消注释,如下图。 第二步,Options-->Ascii String Style。选择Cha...
阅读全文
摘要:很容易看出是格式化字符串漏洞。这里的格式化字符串漏洞不像传统的那样,格式化字符串是放在bss段中,并没放在栈上,因此利用起来有些困难。 不过,我们可以利用ebp,可以修改函数的ebp,从而能控制函数的流程。 第一步,修改了main's ebp(也就是修改了echo_ebp's ebp指向的内...
阅读全文
摘要:这个题目在这个链接中分析得很透彻,不再多余地写了。http://bruce30262.logdown.com/posts/245613-sctf-2014-pwn400 exploit:from socket import *import structimport timeshellcode ...
阅读全文
摘要:拿到程序后,拉入IDA,大概看了一番后,尝试运行,进一步了解程序的功能。 发现NX enabled,No PIE。 一号是一个猜数字的游戏,二号是一个留言本,三号是打印出留言的内容,四号是退出。 观察IDA中逻辑后,发现一个格式化字符串漏洞。 在三号功能(Print your messa...
阅读全文
摘要:题目给出了pwn200和libc.so。使用IDA查看程序,发现逻辑很简单。 使用checksec查看pwn200的安全属性,如下图: 发现NX enabled,No PIE。 在第一次读(0x08048524位置)的时候,可以读取17个字节,观察栈结构: 发现可以将nbytes覆盖...
阅读全文

浙公网安备 33010602011771号