自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 问答 (1)
  • 收藏
  • 关注

原创 该博客太监了。。

以后博客更新都在https://dittozzz.github.io/

2019-04-24 17:31:18 757

原创 csaw-ctf warmup wp

拿到题目检查防护:64位程序,简单的栈溢出:程序本身有cat flag计算下溢出点:exp如下:

2019-01-20 10:36:18 675

原创 NUAActf string wp

64位的格式化串还没做过,导致做了半天。拿到题目检查下防护:开启了canary。简单运行看了下程序逻辑后放到IDA里:为了方便看,部分变量名已修改:sub_400A70这个函数里没啥问题。输入east退出来。进入east函数:里面有个格式化串的漏洞:继续往下看:关键在:将输入的这个字符串的首地址强制转化为函数指针后调用他。看汇编清楚点:那这里就可以读入she...

2019-01-12 15:53:15 1148 2

原创 cgpwn2 writeup

拿到题目检查防护:简单运行下:放到ida里看下:hello函数的代码如下:char *hello(){ char *v0; // eax signed int v1; // ebx unsigned int v2; // ecx char *v3; // eax char s; // [esp+12h] [ebp-26h] int v6; // [esp+1...

2019-01-07 11:42:20 1692 7

原创 int_overflow writeup

做了半天,没注意是整型溢出。。。拿到题目检查下防护:随便运行下:放到ida里看下:题目对输入的password的长度进行了检查,只能在4到8范围内。在strcpy处有溢出,想要进行溢出就必须绕过v3的检查。发现v3是8位无符号整数,则最大只能是255。但是read函数能读取的长度是0x199,远大于255,那就可以进行整型溢出,让passwd的长度是 260到264就可以...

2019-01-06 23:06:55 908

原创 Jarvis oj Test your Memory writeup

简单的ret2plt检查下防护,只开了NX。放ida里:问题出在mem_test函数里:点开hint,发现了有"cat flag"这个字符串:而且还在rodata区里,那直接硬编码就可以了。程序本身调用了system函数,那直接ret2plt就行了。根据ida计算出溢出点:溢出点0x13+4。编写exp:from pwn import*a=remote("p...

2019-01-05 20:49:35 845

原创 jarvis oj fm writeup

格式化字符串漏洞简单利用32位程序。canary和nx都打开了。放ida里:直接打印的buf,很明显的格式化字符串漏洞。用%n,将其修改为4即可,exp如下:from pwn import*a=remote("pwn2.jarvisoj.com","9895")payload=p32(0x0804A02C)+"%11$n"a.sendline(payload)a....

2019-01-05 19:39:18 315 2

原创 Jarvis oj level2 (x64) wp

64位程序前6个参数通过寄存器来传递,多于6个的使用堆栈传递。前6个从左到右依次为RDI,RSI,RDX,RCX,R8,R9。多于六个的从右往左依次压入堆栈拿到题目检查保护:放ida里,还是之前一样的程序:程序本身有字符串/bin/sh找下pop rdi ret 在哪:编写exp:from pwn import* a=remote("pwn2.jarvisoj.com",...

2019-01-05 14:22:26 264

原创 jarvisoj level4 wp ROP及DynELF模块

拿到题目开启了NX。放IDA里:栈溢出。程序本身没有调用system函数无法ret2plt。且题目本身没有给出目标的动态库的版本。题目本身有write函数,可以泄露内存,则可以利用pwntools的DynELF模块,找到system函数。本身程序段没有/bin/sh的字符串,则需要使用read函数将字符串读入,read函数有三个参数,这就需要pop pop pop ret这...

2018-12-31 21:27:35 506

原创 Jarvis oj tell me something writeup

拿到题目前checksec下:64位,开启了NX。放到IDA里看下:就单纯的栈溢出,看下调用哪些函数:plt表里并没有system函数,也不知道对方使用的动态库的版本。看到函数good_game:这个函数会读取flag,那么就很显然了,将返回地址覆盖到这个函数即可。计算下溢出点:由于是64位的程序,不能访问大于0x00007fffffffffff的地址空间。但是可以通...

2018-12-31 11:41:24 249

原创 Jarvis oj level2 wp

检查防护开启了NX,没开启PIE和canary防护,程序本身的基址不变。放IDA里看一下程序本身调用了system函数,那么PLT表里就一定有这个函数。看下vulner函数很显然栈溢出。IDA查找下字符串:发现了/bin/sh字符串,而且在本身程序的data段,由于没有开启PIE,那么这个字符串的首地址是不会变的。简单计算下,首地址是0x0804A024,算下溢出点是多...

2018-12-30 20:25:43 1151 3

原创 Jarvis oj level1 wp

看下防护啥也没开。放IDA里看下:很显然,利用泄露的数组的首地址来写通解,就不用管ASLR了。exp如下:from pwn import*a=remote("pwn2.jarvisoj.com","9877")a.recvuntil("What's this:")addr=a.recvuntil(&

2018-12-30 19:55:08 282

原创 Jarvis oj level0 wp

这题就是返回利用自身代码。拿到题目首先检查有什么防护开启了NX保护,没开canary和PIE,本身程序基址不会变。放到 IDA里看一下:main函数如下:调用了 vulner函数:简单的栈溢出漏洞这里看到有callsystem这个函数,那就很明显了,将返回地址覆盖为callsystem函数的地址即可。计算下溢出点:由于是64位的,不能访问超过0x00007fffffff...

2018-12-30 19:44:41 364

原创 栈溢出基本ROP绕过ASLR和NX保护

菜鸡刚学rop,总结下,算是对蒸米大佬这篇文章最后一个样例的一点解释说明。笔记中的程序源代码来自 蒸米大佬的x86一步一步学rop http://www.vuln.cn/6645计算溢出点的位置的脚本可以在大佬的github上下载(其实从IDA上也可以计算出来溢出点)https://github.com/zhengmin1989/ROP_STEP_BY_STEP预备知识:了解动态链接中P...

2018-12-28 15:39:20 3416 1

原创 nuaactf hello_pwn writeup

拿到题目检查下有什么防护:直接放到IDA里:代码很短数组unk_601068和变量dword_60106C都在.bss段里:sub40686()这个函数是读取flag:这里说下read函数,第一个参数为0,代表标准输入即从终端输入,第三个参数是输入的个数是0x10,即16个字节。想要读取flag只需变量dword_60106C的值为0x6E756161即可,那就很明显了,只需...

2018-12-22 15:54:06 1045

原创 cgctf when_did_you_born 栈溢出简单利用

拿到题目,先checksec下,看下防护措施:没有开启PIE。直接放到IDA里看下:有些变量名为了方便看,我已经修改过了。图中箭头处即是溢出点。分析下第一次输入overflowme,如果等于1926就会退出,但是想要拿到flag,就需要overflowme的值为1926,那就很明显了,第一次输入的时候随便输个数只要不是1926就行,第二次输入v4 这个数组的时候,利用缓冲区溢出,将o...

2018-12-22 15:24:55 2528

原创 pwntw start writeup 栈溢出利用自身代码

这题利用了栈溢出,将返回地址覆盖为程序本身地址,造成内存泄露。有个坑是如果你用gdb peda自带的checksec检查防护措施会发现NX是打开的,那么堆栈处的代码无法执行,就无法构造栈里的shellcode,file下发现程序是静态链接的,那就无法利用ret2libc。想了半天也不知道怎么做。就用ubuntu自带的checksec检查下发现根本没有开启NX,可能是gdb的调试环境会影响...

2018-12-22 11:03:41 630 1

原创 CGfsb writeup 格式化字符串漏洞的简单利用

如果对格式化字符串漏洞不怎么了解,推荐看《灰帽黑客》这本书,也可以看看我博客里的https://blog.csdn.net/qq_43394612/article/details/84900668拿到题目,先看下开启了什么保护措施没有开启PIE(内存地址分布随机化)file下是动态链接运行下就是让你先输入name,再输入message就完事了。放到IDA里看一下。很明显是格...

2018-12-22 10:06:50 4208

原创 pwnable.kr 4.flag writeup

没涉及到pwn,就是一道逆向题目。拿到题目访问 http://pwnable.kr/bin/flag 下载文件。。下载得到flag文件,无后缀,记事本打开,发现是elf文件,改后缀为elf。用IDA打开查看汇编代码。发现加了壳,打开字符串窗口看看有没有信息,(shift 加上f12快捷键打开,或者在这里找到字符串窗口并打开,随便一翻就看到了关键字upx,看来应该是upx的壳,用...

2018-12-15 20:31:53 541

原创 pwnable.kr 3.bof writeup

拿到题目访问下http://pwnable.kr/bin/bof.c得到源代码#include <stdio.h>#include <string.h>#include <stdlib.h>void func(int key){ char overflowme[32]; printf("overflow me : &qu

2018-12-15 20:14:12 524

原创 栈溢出漏洞原理及基本利用(ret2addr,ret2arg)

菜鸡总结下,方便复习。了解栈溢出漏洞,需要对汇编里的call指令,ret指令,以及函数的调用过程有所了解。简介栈溢出是向栈中写入超过原本长度限制的数据,使栈中的其他数据被覆盖,常见的是覆盖栈中返回地址,改变程序的执行流程。栈溢出漏洞成立需要两个条件,其一是:有向栈中写入数据的行为,另一个是:使用了gets,strcpy,strcat等 不限制数据输入长度或者不检查数组长度的函数。原理函...

2018-12-14 17:55:08 1931

原创 可执行文件的生成

菜鸡刚学,写下笔记方便复习。一个程序的转化处理过程可以如下表示:.c后缀的源文件 (经过预处理)-> 变成 .i 后缀的源程序 (经过编译)-> .s后缀的汇编语言程序文件 (经过汇编后)-> .o后缀的可重定位目标程序 (经过链接)-> 可执行文件以c ,i , s结尾的文件都是可读的文本文件。.o结尾和可执行文件都是二进制文件。预处理处理源文件中以 “#...

2018-12-14 17:53:01 1291 2

原创 pwnable.kr 2.collision writeup

拿到题目先连上去。ls查看目录得到cat 查看下col.c的源代码#include <stdio.h>#include <string.h>unsigned long hashcode = 0x21DD09EC;unsigned long check_password(const char* p){ int* ip = (int*)p; //这里将...

2018-12-12 11:37:26 482

原创 pwnable.kr 1.fd writeup

拿到题目先连上去ls查看下目录文件目录下有 fd,fd.c ,flag文件。用cat 查看下fd.c源文件得到如下源代码:。#include <stdio.h>#include <stdlib.h>#include <string.h>char buf[32];int main(int argc, char* argv[], char* ...

2018-12-12 10:52:01 243

原创 格式化字符串漏洞原理详解

菜鸡刚学总结下。理解这个漏洞的原理,你需要有汇编层面的函数调用和函数的参数传递知识。如果你不清楚函数的参数是如何传递的,可以看《加密与解密》的逆向分析技术篇,也可以参考我博客里的(https://blog.csdn.net/qq_43394612/article/details/84350677)和(https://blog.csdn.net/qq_43394612/article/detai...

2018-12-08 23:38:02 35711 9

原创 linux下文件目录结构和文件操作命令

刚学linux,总结下。文件目录结构linux 是多用户操作系统,多个用户可以共享的全部硬件和软件。ubuntu没有盘的概念,有且只有一个根目录 / ,所有的文件都在根目录下面。根目录下有个home文件夹,是系统默认的用户家目录,新增用户的家目录都放在这里。其他文件夹即是和系统相关的文件夹。etc文件夹是系统配置文件夹。bin文件夹是可执行文件的文件夹,如常见的命令ls,cat等等。...

2018-12-08 20:34:59 641

原创 rc3ctf 逆向logmein writeup

刚学逆向,很基础的题目,大佬看笑就行了。记录点不是特别的清楚的东西。拿到题目,文件没有后缀,记事本打开,发现是ELF文件,修改后缀名后用IDA打开。直接进到main函数。算法很简单,但是涉及了底层的存储方式,主要是如何手动将long long 型v7转化为字符串(写代码,强制类型转化就直接出来了,下面说下怎么手动转换)。v7最后面的LL表示的是long long 型,之前逆向看到过好多这...

2018-12-05 16:49:58 1748 1

原创 STL学习 sort,lower_bound/upper_bound函数

刚学stl,总结下。两个函数都是基于二分查找的方法,所以在使用这两个函数前,得将序列排序为有序序列。排序就可以利用sort函数。sort(begin,end,条件)如果不写条件,默认是从小到大排序。函数功能是:从begin开始(包括begin)到end-1(包括end-1)按条件进行排序。如果从大到小排序,可以写个函数,将其函数名放在条件处。bool big(int a,int b)...

2018-12-04 17:53:23 493

原创 汇编学习(6)深入理解little-

菜鸡初学汇编,总结下 little-endian。这个破东西也困扰我好久,也算终于搞明白了。little-endian 简单来说即低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。首先,明确一点,最小的单元都是字节;数据在内存中的存放是以字节为单位的。字节内的内容没有所谓的高位高址,低位低址。在内存中存放数据时,先将这个数据拆分为一个一个的字节。再将高位字节放在高址,低位字节放低址...

2018-11-25 22:55:44 396

原创 逆向学习笔记(1)函数参数

菜鸡刚学汇编,总结下。一般情况下:首先观察函数调用前的代码:例如push 1push 2call 函数再看堆栈平衡处:如果 是add eax,0x8 或者是 ret 0x8由于0x8/4=2 则传入的参数的个数就是2个。以上是一般情况下。但是由于函数调用约定的不同例如__ fastcall约定,最左边的两个参数用 ecx,edx来传递,其余的参数通过堆栈push传递(由...

2018-11-22 23:10:14 740

原创 汇编学习笔记(5)x86汇编 栈中数据的存储。

菜鸡刚学汇编,总结下。调用函数后,函数会开辟一块缓冲区,例如push ebpmov ebp,espsub esp,0x40这个sub esp,0x40 就是开辟了缓冲区,不同编译器开辟的缓冲区的大小不同,不用在意这个大小。开辟的这块缓冲区用来存放局部变量。堆栈中 单独存储的变量 ,每个都占4个字节的大小。并不是挨着存储的,这样虽然会造成空间浪费,但是可以减少寻址时间。例如 c语言中...

2018-11-22 09:44:13 1734

原创 汇编学习(4)函数调用

菜鸡刚学汇编,总结下。哪里有错误欢迎指出。函数调用一般有个模板。push ebpmov ebp,esp//这里提升堆栈sub esp,0x40 //这里是开辟缓冲区,不同编译器开辟的缓冲区大小不同。push edipush esipush ebx//保留现场lea edi, dword ptr ss:[ebp-0x40]mov ecx,0x10mov eax,0xccc...

2018-11-21 23:39:52 2963

原创 南邮CTF逆向 ReadAsm2 writeup

菜鸡刚学汇编,找道逆向题练练手,详细写下怎么解题的。由于是菜鸡,写的很啰嗦。主函数如下。函数汇编代码如下4004e6: 55 push rbp 4004e7: 48 89 e5 mov rbp,rsp前两句 push rbp 将rbp压栈,再将 rsp的值给rbp,提升堆栈的。4004ea: 48 89 7d...

2018-11-19 17:47:50 796

原创 汇编学习(1)汇编的一些基础知识。

刚学汇编的菜鸡,总结一下。底层中数字的存储方式和运算假设为8位cpu1.无符号数直接将正数转化为二进制数。2.符号加绝对值数。(原码)先将整数转化为二进制数。不足7位在左边补0,如果是正数在最左边加0,是负数在最左边加1,。3.反码。将除符号位以外的数取反。4.取补码运算。所有的数取反,再加上1(正常运算)。5.以二进制补码形式存储整数。如果是正数,其原码即是补码。如果是...

2018-11-17 11:29:05 608

原创 汇编学习(2)x86汇编的几种寄存器

菜鸟一枚,刚学汇编总结下八个通用寄存器(没有段寄存器)EAX,EBX,ECX,EDX,EBP,ESP,EDI,ESIESP 指向栈顶 PUSH一个值进栈,是存放在ESP上面那个地方,push后ESP值减少,再次指向栈顶。POP是将ESP指向的值 POP出去,POP后ESP的值增加,再次指向栈顶。例如 AAAAAAAA ←ESP 则PUSH eax后,变为...

2018-11-17 11:13:06 731

原创 汇编学习(3)x86常用汇编指令学习

刚学习汇编,根据我的学习进度会逐渐更新指令详细用法,以便以后复习,写的比较通俗,面向初学者。mov指令:mov 目标操作数,源操作数; (类似高级语言的等于号)拷贝 源操作数 到 目标操作数。例如 mov eax,ebx前后的位数(宽度)必须是相同的,8位对应8位,16对应16, 32位对应32位。(汇编有三种操作数:寄存器操作数,存储器操作数,立即数。寄存器操作数就是寄存器中的数,存...

2018-11-10 23:41:12 1311

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除