[XDCTF-2017] easyeasy

Posted on 2017, Oct6, Friday 18:16:27 • Tagged with xdctf-2017, ctf-pwn, pwn-stack

分析

拿到题目后F5,发现是个菜单题,并且给出了libc

linux下如何加载指定的so文件,可以见: Linux 加载动态链接库原理分析

先挑重点说吧

sub_400B4B

在这里 qword_6020D0 这个全局变量被分析出了奇怪的语法

考虑它是一个结构体一样的东西,根据F5手动创建一个结构体

创建后F5便正常了许多

在阅读源码后可以得知,在执行 sub_400985 时可以将 fun4 的最后一个byte重写,也就是说在

(*(void (**)(void))(*qword_6020D0)->fun4)();

可以执行到 0x400A**

在翻看汇编代码时发现 …


Continue reading

Linux 加载动态链接库原理分析

Posted on 2017, Oct6, Friday 17:39:58 • Tagged with pwn

挖坑待填

从指定目录加载动态链接库

只需要设置 LD_LIBRARY_PATH 这个环境变量即可

若是希望后面的程序都优先从该目录加载,可以执行下面的命令

export LD_LIBRARY_PATH=/home/plusls/Desktop:$LD_LIBRARY_PATH

其中 /home/plusls/Desktop 为so文件所在的目录

注:这样设置后 pwntools 起的进程也会继承该环境变量,加载此libc


Continue reading

科学使用 IDA

Posted on 2017, Oct6, Friday 04:27:05 • Tagged with ida

ida作为工业级的逆向分析工具,尤其是其F5这个让人增寿的东西,若是正确使用,则可以为分析者节省下大把时间。

注 :本文默认IDA版本均为IDA7.0以及以上

解决堆栈平衡,花指令

在如下文章有详细介绍

[XDCTF-2017] destory

IDA python

挖坑待填

插件

1. Python_editor

在IDA中编写python脚本简直反人类,若是需要运行一个python脚本还是比较麻烦的,打上了这个插件后可以很方便的编写以及运行python脚本

安装
  1. 安装需要 Qscilla 模块,具体的安装比较复杂,作者已经帮忙打包好了一个装好所有依赖的python,需要从该链接下载 Pyqt5 ida …

Continue reading

[XDCTF-2017] destory

Posted on 2017, Oct6, Friday 04:21:20 • Tagged with xdctf-2017, ctf-reverse

分析

最开始的话

本题会对注册表进行修改,请自行nop掉该函数或者放到虚拟机运行

main函数

拿到题目拖进ida,发现main函数无法f5,提示这个地方不是个函数

当手动创建函数时提示 *The function has undefined instruction/data at the specified address. *

这是因为ida无法识别这个函数的开始和结束

这时只需要从main函数开始一直选中到retn,这时这片区域都变成了灰色

按下p后函数便创建成功了,此时main函数内部也从红色变成了黑色。

但是f5的结果却非常的奇怪

到汇编一看,是因为在 0x4015F5 附近加了花指令

手动 …


Continue reading

[XDCTF-2017] base64

Posted on 2017, Oct6, Friday 02:12:44 • Tagged with xdctf-2017, ctf-crypto, base64

分析

题目中给出了一个txt,其内容为

bWFpbigpe2ludCBpLG5bXT17KCgoMSA8PDEpPDwgKDE8PDEpPDwoMTw8Cm==
ICAgICAgIDEpPDwoMTw8KDE+PjEpKSkrKCgxPDwxKTw8KDE8PDEpKSksKCgoMQp=
ICAgICAgIDw8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKQq=
ICAgICAgIDw8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMQp=
ICAgICAgIDw8MSk8PCgxPDwxKTw8ICAgICAgICAgKDE8PDEpKS0oKDE8PDEpPDwoCr==
ICAgIAkxPDwxKTw8KDE8PDEpKSsgICAgICAgICgoMTw8MSk8PCgxPDwoMT4+Ch==
ICAgICAgIDEpKSkrKDE8PCgxPj4xKSkpICAgICAgICAgICAgICAgICAgICAgICAgLAq=
ICAgICAgICgoKDE8PDEpPDwoMTw8MSkgICAgICAgICAgICAgICAgICAgICAgICA8PAo=
ICAgICAgICgxPDwxKTw8KDE8PDEpKS0oKDEgPDwxKTw8KDE8PDEpIDw8KDE8PCgxCl==
ICAgICAgID4+MSkpKS0oKDE8PDEpPDwoMTw8KDE+PjEpKSkpLCgoKDE8PDEpCp==
ICAgICAgIDw8KCAgICAxPDwgICAgICAgICAgICAgICAgICAgICAgICAgIDEpCt==
ICAgICAgIDw8KCAgICAxPDwgICAgICAgICAgICAgICAgICAgICAgICAgIDEpCu==
ICAgICAgIDw8KCAxPDwxKSktKCgxIDw8MSk8PCAoMSA8PDEpPDwoMSA8PAr=
ICAgICAgICgxPj4xKSkpLSgoMTw8MSk8PCgxPDwoMT4+MSkpKSksKCgoMTw8MSk8PAo=
ICAgICAgICgxPDwxKTw8KDE8PDEpPDwoMTw8MSkpLSgoMTw8MSk8PCgxPDwxKTw8KAr=
ICAgICAgIDE8PCgxPj4xKSkpLSgxPDwoMT4+ICAgICAgICAgIDEpKSksKCgoMTw8MSk8PAq=
ICAgICAgICgxPDwxKTw8KDE8PDEpKSsgICAgKCgxPDwxKSAgICA8PCgxPDwxKTw8Ch==
ICAgICAgICgxPDwoMT4+MSkpKS0oKCAgICAgMTw8MSk8PCggICAgICAxPDwoMT4+Co==
ICAgICAgIDEpKSkpLCgoMTw8MSk8PCAgICAgICgxPDwxKSAgICAgICAgPDwoMTw8MSkpCl …

Continue reading

base64详解

Posted on 2017, Oct5, Thursday 20:47:02 • Tagged with base64

原理

众所周知,任何数据在内存中都是以Byte为单位进行存储的,每个Byte包含了8个二进制位,因此本文不区分二进制数据与文本,而是将其作为一个整体进行讨论。

编码

base64编码包括以下几个步骤

  1. 将每个BYTE转为8位二进制
  2. 若二进制位不是6的倍数则在其后面补0直到其变为6的倍数
  3. 将每6个二进制位作为整体转换为10进制
  4. 通过查表将十进制转为字符
  5. 若转出的长度不为4的倍数,则在其后补'='

注: 转换表见附录

若是以编码 CNSS 为例,则整个过程为

解码

base64解码包括以下几个步骤

  1. 将除了 = 以外的别的字符通过查表转为十进制数字
  2. 将十进制数字转为6位二进制
  3. 删去等号个数*2位二进制
  4. 将二进制转为BYTE

黑魔法:base64隐写 …


Continue reading

不用[](){}<>写一个Hello World程序

Posted on 2017, Oct5, Thursday 03:52:29 • Tagged with pwn-shellcode

不用<>写一个Hello World程序,本方法基于gcc的编译器

C语言中的函数

在C语言中,一个函数其实可以看做一个变量,假设如今定义了如下函数

int fun()
{
    return 0;
}

&fun 将会像普通变量一样取得这个函数所在的地址

gcc下main函数调用机制

一个程序,其实并不是以main为开始,而是以start函数为开始

随便将一个ELF文件拖入ida可以看见

.text:00000000004006E0 _start          proc near               ; DATA XREF: LOAD:0000000000400018 …

Continue reading

[XDCTF-2017] writeup-list

Posted on 2017, Oct3, Tuesday 16:17:59 • Tagged with ctf, xdctf-2017

1. Reverse

destory : [XDCTF-2017] destory

Stealer : [XDCTF-2017] Stealer

2. PWN

easyeasy : [XDCTF-2017] easyeasy

3. Crypto

基础之Base64 : [XDCTF] 基础之Base64

4. MISC

5. Web

附录

NULL


Continue reading

pwnable.kr:cmd2

Posted on 2017, Jul31, Monday 00:32:48 • Tagged with pwnable.kr

题目

Daddy bought me a system command shell.
but he put some filters to prevent me from playing with it without his permission...
but I wanna play anytime I want …


Continue reading

pwnable.kr:cmd1

Posted on 2017, Jul30, Sunday 23:38:58 • Tagged with pwnable.kr

题目

Mommy! what is PATH environment in Linux?

ssh cmd1@pwnable.kr -p2222 (pw:guest)

1. 分析

看了源码,大意是允许执行一条命令,但是过滤了sh, tmp, flag

所以只需要绕过它并且输出flag内容即可

2. 题解

./cmd1 "/bin/cat f*"

所以我现在都不知道这题和PATH有什么关系 …


Continue reading