自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 解决VMware报错 模块“Disk“启动失败:父虚拟磁盘在子虚拟磁盘创建之后被修改过。父虚拟磁盘的内容 ID……

序配置双机调试的时候作死,在启动系统的过程中还原快照,然后虚拟机崩了,快照也起不来的那种……搜了很多方法,诸如衔接parentCID,或者更改两个CID为同一个(可能会丢失部分数据),方法二对照着我的一堆快照一个个捋关系树搞得头大,而且尝试后都无法启动虚拟机。最后搜到一个帖完美解决问题(感谢这位大哥),我在他的基础上描述得更详细点。先放地址:https://www.cnblogs.com/afeibfp/p/6762607.html本机环境:Windows10 20H2VMware 16.

2021-11-09 16:39:47 10393 5

原创 BUU-rip

查看保护IDA分析看到gets函数,这里没有输入长度限制,输入的s为16位接下来找有没有敏感权限:shift+f12 找到了 /bin/sh,打开发现其地址在401186Tips:这里包含了system指令,若不包含还得找到system地址,payload(填充字符串+填充rbp地址+system地址+/bin/sh地址)尝试写exp运行后报错:Got EOF while reading in interactivefrom pwn import *p = remote('node3

2021-04-27 21:55:34 809

原创 BUU-ciscn_2019_ne_5

检查保护IDA逻辑不是很复杂,第一次提示输入admin密码,密码要输入administrator才能下一步接着是输入功能选项(0~3)第一个输入,看起来没啥用,但是传入的是src字符串,返回的也是src第二个输出,进去只有一个put,一无所有第三个是打印,里面发现了system函数第四个本应该是’0’选项,这里多了个’4’,函数名叫getflag,进去看是个输出flag的函数,初步预测跳转到这里就可以了。第五个才是’0’的退出int __cdecl main(int argc,

2021-04-27 21:53:28 370 1

原创 BUU-ciscn_2019_n_5

查看保护什么都没保护.jpgIDA逻辑很简单,两次输入。这两次输入看起来都可以利用:read限制了读取长度,而且name是全局变量,地址可访问。gets里的text可以进行栈溢出,0x20解题思路EXPfrom pwn import *p=remote('node3.buuoj.cn',29048)context.arch = 'amd64' # 架构名称,不加狂报错……context.log_level = 'debug' # debug模式shellcode = asm(s

2021-04-27 21:50:18 777 1

原创 BUU-[HarekazeCTF2019]baby_rop

查看保护IDAscanf没限制输入长度,这里可以溢出v4寻找system和敏感字符串:都找到了,看来可以缝合缝合了。解题这次还是rop,但是还是查阅了相关资料,比第一次做时理解要深刻点。也会用寻找ret返回的工具:ROPgadgetROP相关概念:ROP就是使用返回指令ret连接代码的一种技术(同理还可以使用jmp系列指令和call指令,有时候也会对应地成为JOP/COP)。一个程序中必然会存在函数,而有函数就会有ret指令。而ret指令的本质是pop eip,即把当前栈顶的内

2021-04-27 21:48:41 1832 1

原创 BUU-warmup_csaw_2016

查看保护啥都没保护[滑稽]IDA很明显的gets输入漏洞,撑爆v5即可cat flag也很贴心地加了system……EXPfrom pwn import *p=remote('node3.buuoj.cn',25059)p.sendline('A'*64+'a'*8+p64(0x400611))p.interactive()flagflag{cda4b354-70c5-4017-bc79-df3428ae7722}...

2021-04-27 21:45:28 214

原创 BUU-pwn1_sctf_2016

今天补牙,帮学弟改大创,以前的题目还没来得及整理,先补票buu部分的入门pwn题ಥ_ಥ查看保护IDA说来惭愧,太久没做C++写的题现在快看不懂了……只能看出来提示输入,有个I和you的处理,然后将变换拷贝回输入变量,输出寻找敏感调用:在字符串查找里找到了全家桶:解题这里因为不知道中间咋处理的,直接莽,想溢出s。但是发现s虽然要求输入32,但是栈空间有3C(60位),显然无法溢出。想通过v0搞事情,发现v0是char,而且是地址,显然无法利用……预计关键就在中间的那一串看不懂的了。在一堆

2021-04-27 21:44:16 382

原创 BUU-ciscn_2019_n_1

检查保护IDA函数主体很简单:初始化v2为0.0 ;输入数字存进v1,然后让v2和11.28125进行对比,相同则自动 cat flag解题gets函数明晃晃地摆在主函数里,准备对v1动手。可以看到v1长度 0x30,下面v2的长度为 0x4进去瞅瞅:v1和v2紧挨着,而且v1覆盖v2的空间那exp思路就很清晰了,把v1到v2首地址之间的空间都填满,然后填进值11.28125,这样就能覆盖v2初始化的0.0 从而满足条件跳转猫flag。Tips:关于11.28125的输入:浮点输入

2021-04-27 21:42:05 244

原创 攻防世界-int_overflow

查看保护IDA先查看字符串搜索下有无可利用字符串,找到了cat flag。进入发现直接是system cat flag。看来只需要跳转到这个地址就可以了(0x8048694)开始只能选择1.login登录,进入后提示输入用户名和密码。这里用户名限制死25位,没有操作空间,密码可以输入409位,插个眼。最后还有个check passwd函数:判断输入函数长度是否大于3小于8然后将输入的密码拷贝给dest。题目提示int_overstack,明晃晃地告诉我是整型溢出。我的关注重点就放在in

2021-04-27 21:37:51 340

原创 攻防世界-cgpwn2

查看保护无栈保护,无PIE保护IDA两次输入,一个输入名字(限制了输入长度),一个输入信息(gets可以作栈溢出)解题思路shift+f12查找字符串并没有发现/bin/sh,可能需要自己整,或者藏在某个变量里在找_system函数的过程中,发现了pwn命名的函数,进入发现有system调用,第一次做的时候看到system就乐了,直接溢出s,然后跳转到pwn地址,结果真就只有 hehehe ……估计这是出题人的恶趣味……后来我在函数列表里找到了真正的_system,括号内的comma

2021-04-23 10:56:00 302 1

原创 攻防世界-CGfsb

知识点格式化字符串漏洞(printf)检查保护PIE没有保护,全局变量地址固定IDA逻辑很简单,输入name,输入message,然后当pwnme等于8时,自动执行cat flag操作。但是pwnme没有被赋值,也没有可操作的地方,需要把它改成8。但是找了一圈没发现有栈溢出的地方,看wp发现是格式化字符串漏洞,只能嗯学(栈溢出还没整熟悉〒▽〒)。格式化字符串知识点格式化字符串(摘自CTF-WIKI)格式化字符串函数是根据格式化字符串函数来进行解析的。那么相应的要被解析的参数的个数也自然

2021-04-23 10:52:00 464 1

原创 攻防世界-guess_num

查看保护好家伙,不留活口(;´д`)ゞIDA逻辑很简单,输入名字后,程序会生成一个随机数种子,然后循环10次以下操作:输入一个数,这个数和本次随机循环数值除以6的余数+1是否相等,相等则跳转到函数 sub_C3E() ,这里面直接有 system(“cat flag”);分析10次随机数必不能每次都对,所以得想办法绕过随机数或者修改随机数种子,让其种子固定则其生成的随机数也固定。本体最有可能栈溢出的地方就是gets,gets获取输入存到v7,进入v7看看有没有漏洞:可以看到v7下面就是s

2021-04-23 10:39:19 547 2

原创 攻防世界-level2

查看保护IDA分析在vulnerable_function里找到了读取溢出:字符串长度136,读取长度256,读多了。这里看到了system,以为可以获取shell,结果发现就是个普通的输出字符串……(菜)寻找敏感权限:直接查找字符串找到了 system /bin/sh但是他俩不在一块儿。第一次直接拼接/bin/sh失败后面尝试在填充buf和ebp后缝合system和/bin/sh,但是一直不成功。尝试了两个system的内存地址也是如此……上网看别人wp,发现真正调用sy

2021-04-22 21:48:34 384 2

原创 攻防世界-level0

探路只有NX试运行:平平无奇IDA找到了读取越界的地方:buf长度80,但是读取了512解题不相关但是想记一下怕又忘了:寻找buf的地址,ALT+T 查找字符串,选中最后的显示所有学长support:栈是存储局部变量的使用完需要恢复成上一个函数的栈结构如下:数据栈底地址(谁的?不吞掉后果如何)rip:返回的地址写脚本的目的:把buf占满,吞掉rbp,修改rip的地址,跳转到指定地址做到这其实卡壳了,其实还有shift+f12这个老朋友○| ̄|_敏感权

2021-04-22 21:45:59 650

原创 攻防世界PWN- get_shell & hello_pwn & when_did_you_born13

找到了初学pwn的笔记_(:з」∠)_get_shell查看保护IDA分析主函数赤条条地写着system("/bin/sh")预计直接访问就可以getshellEXPfrom pwn import *p=remote('220.249.52.134',46898)p.interactive()flagcyberpeace{cecb28ddca24a0b26fe5689bc39dc1ee}hello_pwn查看保护NX保护,堆栈不可执行IDA打印欢迎界面,输入

2021-04-22 21:41:18 270

原创 2019_DDCTF windows_reverse1

查壳有壳去之IDA主函数部分很简单,有个判断v4地址上的字符串是否等于DDCTF{reverseME}。进入关键函数sub_401000瞅瞅:v4 v1都是地址且没说。a1是我们输入的字符的地址。中间有个do while循环,次数和字符串长度一致,预计是逐个处理。解题说实话,摸不着头脑,既然v1和v4的地址和内容都不给,而且byte_402FF8是空的,啥数据没有。那就只好动调了首先是解决v4 = (const char *)(a1 - v1);地址v4等于地址a1和v1相减,结

2021-04-22 21:32:10 163

原创 攻防世界-ReverseMe-120

查壳无壳IDAv11为输入,在sub_401000函数进行处理。中间暂时看不懂。最后让v13字符串逐位与37异或,最后得到的字符串为 ‘you_know_how_to_remove_junk_code’sub_401000:a1:v15 ; a2:v13(结尾比对) ; a3:v11(输入) ; a4:v11的长度这部分看吐了……真就和最后对比字符串一样,要自己排除垃圾代码,下文注释掉的代码基本没用……后半部分是关键,将输入的字符串的ASCⅡ值作为索引,检索table: byte_57

2021-04-22 21:25:36 461 1

原创 攻防世界-流浪者

查壳无壳IDA推测str为输入字符串,限制为 0~9 a~z A~Zsub_4017B0是错误提示输出if判断后是v5分别对三个范围内的str进行对应操作最后将v5传给 sub_4017F0函数处理第一个while循环对a1(也就是传入的v5)的地址进行处理判断,然后用a1+4*v4为字符串下标检索字符串aAbcdefghiabcde。如果检索结果等于KanXueCTF2019JustForhappy 则正确解题先在字符串aAbcdefghiabcde里检索KanXueCTF201

2021-04-22 21:21:20 390

原创 攻防世界-alexctf-2017 re2-cpp-is-awesome

查壳无壳IDA挨个看过去只有红框有具体内容,橙色箭头输出失败或成功。那关键就在这个if判断里。仔细分析这里,发现红框的 off_6020A0和dword_6020C0都是已知的字符串,(其中后者需要处理下间隔,而且是以16进制数字示人)。这种套娃字符串的形式可当作用 6020C0字符串作为下标对6020A0进行排序。EXParrA0=[36, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 54, 0, 0,

2021-04-22 21:17:44 260

原创 攻防世界-re1-100

查壳无壳IDA第一行的 { 原本是123,bufparentread是字符串,差点没反应过来……转换字符串后就很直观了,判断前后是否为括号,两个strncmp比较[1][10]和[30][40]。最后进行confusekey函数处理整个字符串后和另一串数字进行比较。(flag一共长42位)confusKey:关键部分如图所示,其中 szPart系列为该函数内定义,szKey是我们输入的字符串的地址。红框部分,将szKey的[1]~[10]复制给szPart1 [11]~[20]给szPart2

2021-04-22 21:16:29 223

原创 攻防世界-XCTF 4th-WHCTF-2017 BABYRE

查壳ELF文件,无壳IDA逻辑很简单,判断输入的字符串长度是否为14,然后是judge(s)的函数判断,都正确则输出right那么重点就是judge函数。双击进入,发现是长度为181的字符串,将其ASCⅡ提取出来后转字符串,发现毫无意义。然后……只能看看别人的wp看看咋回事(#_<-)>)这题是SMC,judge函数在运行时会进行自解密操作,否则静态分析时无法窥探其真正内容。SMC虽然还没整太明白,但是可以动调试试。既然静态分析他不肯露面,那么动态分析它说不定会自己一层一层剥

2021-04-22 21:13:05 392

原创 攻防世界-suctf-2016 serial-150

查壳ELF,无壳IDA一进去是乱码,部分数据未识别,F5无法查看伪代码。尝试找花指令无果(本身花指令也没学好ORZ)看大佬wp才知道这题要动调……尝试使用GDB调试,结果看花眼了不知道咋调试,这里还是换回IDA动调。到下图终端,同时Linux下弹出提示输入key:这里随便输入,最后理所当然地报错。不过报错正常,重要的是看看后面有啥。紧挨着的是一个strlen,8成是判断输入长度,这里用0x10来比较,也就是输入长度为16位。重新调试,在key输入16位进行尝试:这次顺利通过,通

2021-04-20 11:19:25 369 1

原创 攻防世界-simple-check-100

查壳这题给了三个文件,一个32位exe,一个32位elf,一个64位elf。应该不需要查壳……IDA输入字符串,进行check_key判断。如果返回非0,则执行interesting_fuctioninteresting_fuction:对输入的v22(未知)进行加密处理,最后putchar输出解题这题本来想普通解,写个解密脚本。但是v22=v7 这俩都不知道,无法下手。于是决定 OD 动调32位exe,让程序绕过check_key检查,强行执行 interesting_function

2021-04-19 11:23:46 1077

原创 攻防世界-tinyctf-2014 elrond32

查壳无壳,ELF文件IDA可疑点就 sub_8048414和sub_8048538sub_8048414:输入的a1是a2[1]的地址,a2值为0观察可发现每个case判断a1的值后跳转label_19,label_19是进行 a1+1(a2数组下标+1) 和 case序号运算操作的递归int __cdecl sub_8048414(_BYTE *a1, int a2){ int result; // eax switch ( a2 ) { case 0:

2021-04-19 11:16:04 286 1

原创 攻防世界-XCTF 3rd-GCTF-2017 hackme

查壳无壳IDA这个一开始点开每个函数看有点唬人,但是整体看下main函数结构挺简单的……ORZ在循环内处理v19字符串,然后和flag的每个字符串异或得到v16字符串解题这里踩了一个坑,v17=sub_406D90 % 22 我看出来是有22种情况,但是没把他替换掉原本循环10次的do while,而是在do while(exp中改用while表示)前做了20次循环的嵌套。想看看每一种v17的结果。以下输出的结果全是12390,因为v19变化后再次进入while循环,v19被清零,同时v16

2021-04-19 11:12:30 290

原创 攻防世界-parallel-comparator-200

查壳感动,这题给了源码,查壳都免了✪ ω ✪分析代码逻辑单独写太乱了,直接用注释重写了下。#include <stdlib.h>#include <stdio.h>#include <pthread.h>#define FLAG_LEN 20void * checking(void *arg) {char *result = malloc(sizeof(char));char *argument = (char *)arg;*result = (ar

2021-04-19 11:10:42 221

原创 攻防世界-re-for-50-plz-50

查壳IDA提示MIPS,但还是能进去。F5查看伪代码:argv是flag,argv和0^37异或后的值是全局变量meow的值EXParr='cbtcqLUBChERV[[Nh@_X^D]X_YPV[CJ'flag=''for i in arr:flag=chr(ord(i)^0x37)print(flag,end='')flagTUCTF{but_really_whoisjohngalt}坑&填坑这题是2020.2留的坑,不应该这么简单。搜了下别的wp,发现这题没法正常F

2021-04-19 11:04:02 526

原创 攻防世界-Mysterious

查壳IDA进入关键函数:可以直接看到flag字符串的生成过程,就是不断给text添加后缀。其中只有source没有给出。而source经过了itoa和atoi以及判断等变化,应该是解题关键。atoi&itoaatoi()函数atoi()原型: int atoi(const char *str );函数功能:把字符串转换成整型数。参数str:要进行转换的字符串返回值:每个函数返回 int 值,此值由将输入字符作为数字解析而生成。 如果该输入无法转换为该类型的值,则atoi的返回值为 0

2021-04-19 10:52:14 282

原创 BUU-[ACTF新生赛2020]usualCrypt

查壳无壳IDA进入关键函数:题目叫base,这里的伪代码也确实像base。接下来就该找table了。在伪代码的位移和与操作中,byte_40e0a0重复出现。大概率是table。但是byte_40E0A0缺斤短两,一看就不是正常table。这里倒回去看关键函数的时候发现定义变量的时候还有个 sub_401000函数:将byte_40E0AA的6到14位与byte_40E0A0的6到14位进行调换。但是问题来了,40E0A0定义时只有10位,它是如何做到6~14位操作的……这里

2021-04-19 10:48:12 871 1

原创 BUU-[FlareOn3]Challenge1

查壳无壳IDA逻辑简单,Str1和Str2(已知)相等则正确。而Str1是输入,在函数sub_401260处进行了变换。sub_401260:看到连续的位移和&运算是头疼且熟悉的。最近自己写了下base64,在学的过程中看到别人的base64代码和这几分神似。所以猜测这里是base相关加密。进入反复出现的byte_413000:YXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/太熟悉了,就是base64

2021-04-19 10:36:31 168

原创 BUU-[FlareOn5]Ultimate Minesweeper

查壳无壳,但发现是.net程序附程序运行截图:dnSPY找到main函数,顺便瞟一圈有没有可疑的函数名:找到了GetKey,像是作者明晃晃的暗示(要是不暗示我就跪了……)可以发现有一长串数组,后面跟着数组间的异或操作。由于不太会dnSPY,不知道怎么溯源里面的arry2,放弃。回到主函数,寻找调用GetKey的地方:发现有两个if判断,第一个不知道干啥的,第二个是判断TotalUnrevealedEmptySquares == 0则有个sleep操作,让线程休眠1000毫秒。然后进

2021-04-19 10:34:14 638 1

原创 BUU-[WUSTCTF2020]level3

查壳无壳idaF5伪代码如下:int __cdecl main(int argc, const char **argv, const char **envp){ char v3; // ST0F_1 char *v4; // rax char v6; // [rsp+10h] [rbp-40h] unsigned __int64 v7; // [rsp+48h] [rbp-8h] v7 = __readfsqword(0x28u); printf("Try my base

2021-04-19 10:22:13 296

原创 火绒一面病毒样本分析

样本信息MD5: 6E4B0A001C493F0FCF8C5E9020958F38SHA1:BEA213F1C932455AEE8FF6FDE346B1D1960D57FFCRC32: 1CD8074D查壳无壳手动分析主函数int __cdecl main(int argc, const char **argv, const char **envp){……………… v77 = v3; v78 = retaddr; v76 = -1; v75 = &loc_

2021-04-15 23:28:55 1385

空空如也

空空如也

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

TA关注的人

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