寻找Gadgets

x86中参数都是保存在栈上,但在x64中前六个参数依次保存在RDI, RSI, RDX, RCX, R8和 R9寄存器里,如果还有更多的参数的话才会保存在栈上。所以我们需要寻找一些类似于pop rdi; ret的这种gadget。如果是简单的gadgets,我们可以通过objdump来查找。比如objdump -d black_hole(文件名)后我们找到了类似于pop rdi;ret的gadget。

Read More

0x00

为了调试smail也是蛮拼的,看各种帖子做各种尝试,最有良心的要算拾荒人的这篇帖子了,链接在此http://www.w2bc.com/article/148467

0x01

  1. 在调试中遇到的最大的问题要数Debugger提示的端口被占用或者无法链接的问题了,这篇帖子中做了详细的说明。
  2. 在调试之前要打开安卓模拟器,虽然AS自带的安卓模拟器在导入smail文件后无法通过正常的按钮打开,但是一定要想办法打开,比如通过其他工程打开。
  3. 我的Android Studio的版本是2.2.3,需要改进的是帖子中3.2在AS的终端以调试模式启动应用的命令。
1
adb shell am start -n "com.hello/com.hello.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D

0x01 题记

调试ELF文件时发现一个很不错的搭配功能,strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用,而使用tail命令的-f选项可以方便的查阅正在改变的日志文件。那么结合起来就可以查看程序系统调用的变化。

Read More

这道题算是这学期遇到的最经典的creackme了,很有必要仔细分析一下。它给出的是一个exe可执行文件和一份readme.text文件,首先我们看一下,它们的内容。一份readme描述了具体的问题,它也给出了半个用户名,然后提示暴力循环6分钟用i5处理器跑的话,但是到最后你会发现这明显有点扯淡,我们逆向分析出算法后给它1秒跑出来。

Read More

拿到这道题是个压缩包,解压后得到一个app-release.apk。我们安装到安卓模拟器测试一下,发现让我们输入随机码,下面显示“您的随机码为:xxxxxx”,这个随机码变化很快,手动输入下面的随机码有点不可能,我们随便输入一个随机码点击提交后显示input is wrong。

Read More

拿到这道题的文件,是个压缩包,解压后得到一个secret.data的二进制文件。没见过以.data开头的文件,经过百度得知data是在各种系统、程序中,都会有很多自定义的文件名、文件扩展名。无论data文件指的是文件名data还是扩展名data,都是系统或程序自定义的数据文件。data是数据保存的备份类文件,一般可以用meidaplayer、记事本或word打开。如果是:

Read More

0x00 题记

学习pwn时总是接触到Rop技术,看别人的writeup很是吃力,别人的文章中也只是简单的提了一下,但是具体什么是Rop,它的利用原理和思想是什么我都不得而知。现在我经过查找相关的资料后终于对其有了更深入的理解。ROP全称为Retrun-oriented Programmming(面向返回的编程)是一种新型的基于代码复用技术的攻击,攻击者从已有的库或可执行文件中提取指令片段,构建恶意代码。下面我们进行具体说明。

Read More