自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 64位ubuntu使用gcc -m32报错

问题描述:64位unbutu下利用gcc编译32位程序报错解决方法:当前架构的 gcc,是 64 位的。需要 32 位支持文件sudo apt install gcc-multilib

2022-01-25 21:10:16 1814

原创 [BUUCTF]PWN——ciscn_2019_es_1

ciscn_2019_es_1装了一个ubuntu18.04的机子,终于可以做2.27的题目了例行检查,64位程序,保护全开本地运行一下程序,经典的堆体菜单64位ida载入,看一下各个选项的函数

2021-07-20 19:27:26 1291 2

原创 [BUUCTF]Reverse——[WUSTCTF2020]funnyre

[WUSTCTF2020]funnyreELF文件,无壳,用ida64打开,程序没法f5,从程序入口点找到main函数的汇编部分因为这边没有创建函数,所以无法f5在选取汇编部分打算创建函数的过程中发现了不对劲的地方jz和jnz跳转到同一地址,花指令,nop掉,然后那个call看着也不太对的样子,先也nop掉,call下面的那条jz也nop掉。经过多次测试,要从第一条jz指令nop到xor eax,eax之前一共有4处需要修改nop掉,修改完后,发现一共有两端函数没有创建,拿一处说一

2021-07-13 18:02:08 1254 1

原创 [BUUCTF]Reverse——[CFI-CTF 2018]IntroToPE

[CFI-CTF 2018]IntroToPE例行检查,发现是 .NET逆向运行一下,看看大概的情况让我们输入密码,点击validate会检查密码是否正确.net逆向用dnSpy打开,在左侧,找到程序名的目录 ,就能找到程序的关键代码了找到绑定在validate按键上的代码,它是button控件检验flag2,flag2的值由flag赋予,flag的值与validatePasswd.verifyPasswd()函数有关看一下validatePasswd.verifyPasswd();

2021-07-12 16:12:18 409

原创 [BUUCTF]Reverse——特殊的 BASE64

特殊的 BASE64无壳儿,直接用ida打开 ,习惯性的检索程序里的字符串根据题目这道题应该是道变种的base64,在字符串列表里也看到了base64加密后的字符串,只是这个密码表跟常见的有点不大一样,常见的base64的密码表应该是ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/而这题的看到的类似密码表的字符串是AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYy

2021-07-12 15:42:24 2503

原创 [BUUCTF]PWN——qctf2018_stack2

qctf2018_stack2例行检查 ,32位程序,开启了canary和nx保护本地运行一下,看看大概的情况32位ida载入,检索字符串发现了后门main函数太长了,贴一下关键部分,漏洞点在修改v13数组里的值。利用数组越界漏洞去修改ret,将ret修改成backdoor即可。一开始我想当然的认为偏移是0x70+4,但是实际利用的时候发现不对。动调找一下吧我输入的数据是12,存储在了0xffffcf38处,v13数组的地址找一下函数结束的时候esp的地址相差0

2021-04-12 18:58:33 555 1

原创 [BUUCTF]PWN——[BSidesCF 2019]Runit(mmap+shellcode)

[BSidesCF 2019]Runit例行检查,32位程序,开启了nx保护运行一下看看大概的情况ida载入虽然开了nx,但是buf用mmap映射了地址,可读可写可执行,直接传入shellcode,15行调用了buf,运行shellcode获取shell。expfrom pwn import *p=remote("node3.buuoj.cn",25055)context.arch="i386"shellcode=asm(shellcraft.sh())p.sendlin

2021-04-12 14:40:03 486 1

原创 [BUUCTF]Reverse——[SWPU2019]ReverseMe

[SWPU2019]ReverseMe例行检查,32位程序,c++写的,无壳本地试运行一下,看看大概的情况程序里有好多复杂的函数,静态分析有点难度,这边选择动调理一下程序逻辑。汇编动调小白,简单记录一下自己的调试过程。找到程序的入口点,在这边下断点,f8单步直到让我们输入运行到call sub_CF37B0的时候开始让我们输入了,输入结束后将ebp-0x90处的值跟0x20比较,更改ZF标志位,0xCF28C7处的jz会根据这边的情况进行跳转,如果ZF标志位为0,则跳转,否则就会输出Try

2021-04-12 14:10:23 1859 2

原创 [BUUCTF]Reverse——[2019红帽杯]childRE(C/C++函数名修饰)

[2019红帽杯]childRE例行检查,64位程序,c++写的,无壳儿试运行程序没有得到有用的提示,检索字符串看到有关flag的提示信息,跟进来到关键函数截取关键部分代码分析循环遍历去取outputString字符串中的字符,然后分别对23取余和除数,做为下标,分别在str3中找到对应位置,而且还必须与str1和str2对应位置的值相等先来逆算一下outputstring中的字符串str3 = '1234567890-=!@#$%^&*()_+qwertyuiop[]QWER

2021-04-10 19:46:26 375

原创 [BUUCTF]Reverse——[FlareOn1]Bob Doge(c#逆向)

[FlareOn1]Bob Doge例行检查 ,64位程序,c++写的,无壳本地试运行一下,看看大概的情况,安装程序???搞了半天,以为是逆向安装程序,逆了半天没看懂,查了wp之后知道了是要逆向这个安装包安装后的程序。心态炸裂。检查一下安装的程序,32位,c#写的,无壳试运行一下,点击decode,真·手动狗头用dnspy打开,找到decode按键上的代码程序进行了三次运算,得到了text,text2和text3,最后回显text3。不太会用dnspy,不知道dat_

2021-04-10 14:35:26 898

原创 [BUUCTF]Reverse——[MRCTF2020]PixelShooter(apk)

[MRCTF2020]PixelShooter这题主要是使用安卓逆向的工具,试了很多,发现jeb最好用,百度爱盘在线工具包即可下载听大佬门说安卓unity游戏的核心逻辑一般位于assets\bin\Data\Managed\Assembly-CSharp.dll进入直接搜索{.flag{Unity_1S_Fun_233}...

2021-04-09 15:37:35 791

原创 [BUUCTF]PWN——actf_2019_babyheap(UAF)

actf_2019_babyheap例行检查,64位程序,没开PIE检索字符串的时候发现了’/bin/sh’字符串程序在申请malloc的时候定义了这样一个结构体菜单里调用了system,这下system地址有了add()申请两个chunk看一下,方便理解delete()show()利用思路:将ptr[i][1]处原先的print_content函数改成system,ptr[v1]改写成bin/sh的地址,这样在执行show的时候就会执行system(‘/bin/sh

2021-04-09 14:57:53 738

原创 [BUUCTF]Reverse——[ACTF新生赛2020]SoulLike

[ACTF新生赛2020]SoulLikeELF文件,应该没壳儿,在ubuntu里运行一下看看大概的情况直接上ida了如果能满足sub_83A()的条件,就能输出flag看一下sub_83A()sub_83A(),将传进去的v8进行了3007行的异或操作,然后得到v3里的值,如果不对,会将错误的地方的下标打印出来拿v3里的值反向异或一下应该就能得到flag,但是将sub_83A()里的代码复制出来后还要修改好一会儿,既然会将错误的那一位给打印出来,那就干脆爆破每一位吧,也不多,12位贴

2021-04-07 15:53:08 593

原创 [BUUCTF]——[FlareOn5]Ultimate Minesweeper

[FlareOn5]Ultimate Minesweeper直接勇,把所有雷都点一遍,就知道数字在哪里了例行检查试运行一下程序,扫雷?不管点哪儿都是雷,运气太差了吧c#的程序,用dnSpy打开,首先找到程序入口点百度一下里面出现的函数12行创建windwos窗体,MineField是雷区的封装,是游戏的核心组建;它负责方格的布局以及地雷的分布;并控制玩家的基本操作以及正确的响应。AllocateMemory创建雷区SquareRevealedCallback根据英文翻译方块字显示回

2021-04-06 14:43:42 886

原创 [BUUCTF]Reverse——[网鼎杯 2020 青龙组]jocker

[网鼎杯 2020 青龙组]jocker例行检查,无壳,32位程序运行一下看看大概的情况32位ida载入进入encrypt函数会报错,0x40151D处反编译失败40151D:无法转换为伪代码我一开始以为是堆栈不平衡导致,后来发现恢复后也没法f5看程序的逻辑,大概这边的代码被加密了,24~25行代码的作用就是给这个函数代码进行解密,这个函数后面在说,先继续往下看。wrong(),一个简单的加密函数omg()经过wrong处理的字符串得到unk_4030c0

2021-04-06 10:57:55 555

原创 [BUUCTF]REVERSE——[FlareOn5]Minesweeper Championship Registration

[FlareOn5]Minesweeper Championship Registration附件是jar程序,先运行看一下大概的情况,叫我们输入code直接用jd-gui打开看到一个域名,[email protected],看程序逻辑我们要输入的code就是它了flag{[email protected]}...

2021-04-03 21:21:45 351

原创 Nep欢乐个人赛部分复现记录

写在前面:感谢不会修电脑师傅的指导博客园维护,没法看不会修电脑师傅的博客,详细的先看这位大佬文章,比赛时只做出来了一道re一道pwn,还是太菜了。每天写一点,记录一下复现过程。Rehardcsharp例行检查,c#写的一开始用ida反编译的,看不大懂,百度后用的dnSpy反编译// hardcsharp.Program// Token: 0x06000001 RID: 1 RVA: 0x00002050 File Offset: 0x00000250private static voi

2021-03-24 17:30:28 693 2

原创 [BUUCTF]REVERSE——[2019红帽杯]xx

[2019红帽杯]xx附件步骤PE文件,查壳儿,64位程序,无壳儿64位ida载入

2021-03-23 14:43:07 1383 3

原创 [BUUCTF]PWN——starctf_2019_babyshell(有限制的shellcode)

starctf_2019_babyshell例行检查,64位程序,开启了nxmain函数,往buf里写入shellcode,然后程序会执行shellcodsub_400786(),这个函数会对我们输入的shellcode进行检查检查的时候*i即可退出,可以使用\x00来绕过。...

2021-03-23 10:45:17 839

原创 [BUUCTF]PWN——wdb_2018_3rd_soEasy(ret2shellcode)

wdb_2018_3rd_soEasy例行检查,32位程序,没有开启任何保护,估计是ret2shellcode32位ida载入一开始输buf在栈上的地址,然后存在栈溢出,利用pwntools自动生成shellcode,之后劫持返回地址到buf执行shellcodeexpfrom pwn import *context.arch="i386"p=remote("node3.buuoj.cn",25832)p.recvuntil("Hei,give you a gift->"

2021-03-23 10:44:24 350

原创 [BUUCTF]Reverse——findKey

findKey例行检查,32位程序,c++写的运行一下,没什么特别提示的地方32位ida载入,检索字符串发现flag提示,跟进跳转会发现中间有一段汇编没有转换成成函数,选中这部分,按p转换成函数,在按f5就能得到关键代码理一下,贴一下关键代码,这一段应该是计算flag的代码,根据sub_401005中有md5加密的api调用判断sub_401005是md5加密。太久没做用API进行字串hash的題目了,去微软的网站上查询了一下才认出来了是md5加密首先让我们输入string1

2021-03-23 10:41:59 492

原创 [BUUCTF]PWN——gyctf_2020_document(UAF)

gyctf_2020_document例行检查,64位程序,保护全开漏洞在free chunk的时候简单看一下其他几个功能函数add()像我这样的新手,可以申请几个chunk看一下,方便理清楚堆的内部情况show(),根据存放在bss段的0x202060堆指针数组来输出对应的chunk里的值edit()利用思路申请一个chunk,释放掉,在show,由于存在uaf,这样就泄露了libc泄露libc后,由于第一个chunk被释放了,并且edit函数编辑的是chun

2021-03-22 15:02:56 710 2

原创 [BUUCTF]PWN——xman_2019_format(堆上的fmt+爆破栈)

xman_2019_format例行检查,32位程序,开启了nx检索程序里的字符串,发现了后门函数,back_doorr=0x80485AB这题buf并不存储在栈上,而是在malloc申请的堆上之后buf作为参数,进入到sub_80485C4由于存在后门函数,可以利用格式化字符串将返回地址改为back_door这边主要利用了%ac$bn,将长度a的数据写入偏移为b的位置。格式化字符串漏洞,一般需要先泄露栈地址,然后计算偏移,但是这里没办法这么利用,因为这里的s存放在chunk上,不在

2021-03-22 10:49:03 573 3

原创 [BUUCTF]PWN——bjdctf_2020_YDSneedGrirlfriend(UAF)

bjdctf_2020_YDSneedGrirlfriend例行检查,64位程序,开启了canary和nx试运行一下,看看大概的情况,常见的堆题的菜单64位ida载入,首先是检索字符串发现了程序中的后门函数,backdoor=0x400b9cadd_girlfriend()del_girlfriend()print_girlfriend()常见的uaf漏洞的利用方法,不清楚的详细看ctfwikishow函数会调用chunk里的puts输出chunk里的name

2021-03-19 10:37:44 594

原创 [BUUCTF]PWN——护网杯_2018_gettingstart

护网杯_2018_gettingstart例行检查,64位程序,除了RELRO,其他全开试运行一下,看看大概的情况64位ida载入当满足v5=0x7FFFFFFFFFFFFFFFLL并且v6=0.1的时候就能够获取shell,看一下栈布局确定了偏移,可以在读入buf的时候修改v5和v6的值这题没什么难度,v5的值可以直接表示,只是要注意一下0.1在内存中的表示。内存中存放的是数据的补码,浮点型数据的在内存中按照IEEE754 标准存储。有兴趣的师傅可以百度看看怎么算。这边在其他师傅的博

2021-03-18 13:17:05 626

原创 [BUUCTF]PWN——judgement_mna_2016(32位fmt)

judgement_mna_2016例行检查,32位程序,开启了canary和nx运行一下,看看大概的情况32位ida载入明显的格式化字符串漏洞,动调看一下输入点的位置,找一下flag在栈上的位置,算一下偏移就能够打印出flag先找一下输入点参数在栈上的位置可以看到在oxffffcf4c,然后看一下栈上的布局发现在距离我们输入的数据的偏移为28和32处存放着flag,定位偏移到该处即可这题根本不用写exp,但为了水长度,贴一下吧from pwn import *conte

2021-03-18 12:47:26 424 3

原创 [BUUCTF]PWN——wustctf2020_name_your_dog(越界修改got表)

wustctf2020_name_your_dog例行检查,32位程序,开启了canary和nx本地试运行一下看看大概的情况32位ida载入,检索字符的时候发现了后门函数,shell_addr=0x80485cb主要函数,感觉跟cat那题差不多 漏洞函数...

2021-03-18 10:09:11 443

原创 [BUUCTF]PWN——picoctf_2018_are you root(程序逻辑错误)

picoctf_2018_are you root例行检查,64位程序,开启了canary和nx本地试运行一下,看看大概的情况

2021-03-17 18:10:41 438

原创 [VNCTF 2021]White_Give_Flag

[VNCTF 2021]White_Give_Flag公开群里有官方wp,简单记录一下自己的复现过程例行检查,64位程序,保护全开本地试运行一下,看着像堆64位ida载入main()sub_E5Aqword_2010120数组中存放着5个字符串,对应菜单的5个选项。而且这个函数执行完后会在chunk中遗留flag的值sub_F07读取菜单选项的函数返回的是 read() 的返回值⽽不是 atoi() 的返回值,根据返回值打印qword_202120 中的字符串

2021-03-16 21:25:08 853

原创 [BUUCTF]PWN——mrctf2020_shellcode_revenge(可见字符shellcode)

mrctf2020_shellcode_revenge例行检查,64位程序,开启了RELRO和PIE本地运行看一下大概的情况64位ida载入,没法f5,直接看汇编jg大于则跳转,jl小于则跳转,jump无条件跳转要让程序继续执行下去,肯定是跳转loc_11ACloc_123Aloc_11B8cdqe使用eax的最高位拓展rax高32位的所有位movzx则是按无符号数传送+扩展(16-32)EAX是32位的寄存器,而AX是EAX的低16位,AH是ax的高8位,而AL是ax的低

2021-03-15 15:14:30 3545 1

原创 [BUUCTF]PWN——wdb2018_guess(stack smashing--canary报错利用)

wdb2018_guess例行检查,64位程序,开启了canary和nx本地试运行一下,看看大概的情况64位ida载入存在溢出利用点,但是有canary保护,这边39行和41行的puts函数是写死的,没法用来接收泄露的信息,想到了利用canary的报错输出在程序加了 carry 保护后,如果我们的输入覆盖了 carry ,程序就会报错,报错代码如下,可以看到,程序会执行 __stack_chk_fail 函数来打印 __libc_argv[0] 指针所指向的字符串(默认存储的是程序的名称)

2021-03-14 21:38:07 1115 2

原创 [BUUCTF]PWN——wustctf2020_name_your_cat(数组越界)

wustctf2020_name_your_cat附件步骤例行检查,32位程序,开启了canary和nx本地试运行一下看看大概的情况32位ida载入,在检索字符串的时候发现了后门主要函数

2021-03-13 11:08:56 1194 4

转载 堆的六种利用手法

详细看链接文章:堆的六种利用手法

2021-03-11 16:01:46 246

原创 [BUUCTF]PWN——gyctf_2020_some_thing_interesting(格式化字符串+UAF)

gyctf_2020_some_thing_interesting附件步骤例行检查,64位程序,保护全开本地试运行一下程序,看看大概的情况64位ida载入sub_B7A()check()create()

2021-03-11 15:57:37 801 2

原创 [BUUCTF]PWN——ciscn_2019_final_2

ciscn_2019_final_2附件步骤例行检查,64位程序,保护全开本地没有flag文件,远程连接一下,经典的堆题的菜单64位ida载入init()allocate(),只可以申请0x20或者0x10的chunkdelete()show(),show只能调用3次bye_bye这道题的关键点在于文件流的知识dup2 用来复制文件描述符:int dup2 (int oldfd,int newfd)_fileno 是用来规定 fd 所指向的文件流的,i

2021-03-10 16:02:57 1047 1

原创 [BUUCTF]PWN——ciscn_2019_final_3(tcache dup)

ciscn_2019_final_3附件步骤:例行检查,64位程序,保护全开本地试运行一下,看看大概的情况,提示是堆题64位ida载入add()remove()简单的思路:先合并堆块,合并后的堆块大于tcache的范围,然后free掉即可出现libc,接下来就是堆块重叠malloc一个堆块到libc空间,通过gift得到libc地址,接着tcache attack修改__free_hook拿到shelltcache第一次接触tcache,根据ctfwiki上的知识点简单总结一

2021-03-10 12:59:16 936

原创 [BUUCTF]PWN——picoctf_2018_buffer overflow 0

picoctf_2018_buffer overflow 0附件步骤例行检查,32位程序,开启了nx保护提示要ssh链接ssh连上后稍微尝试了一下,好像vuln这个程序能读出flag32为ida载入测试文件百度一下signal,得知11是(SIGSEGV),对存储的无效访问的信号。15行的意思是设置了一个函数sigsegv_handler来处理当程序产生对存储的无效访问。就是说当程序造成无效内存访问的时候,就会输出flag。在往下看vuln函数将src拷贝到dest中,

2021-03-09 16:19:04 417

原创 python3实现get和post传参

利用urllib库get传参url = "http://172.20.101.101/reg.php"payload = { "a":"system('cat /root/flaginfo.txt');"}data = urllib.parse.urlencode(payload)response = urllib.request.urlopen(url + "?" +data)print(response.read().decode())post传参url="http

2021-03-09 09:46:43 379 1

原创 [BUUCTF]REVERSE——wdb_2018_2nd_easyfmt(32位格式化字符串修改got表)

wdb_2018_2nd_easyfmt附件步骤例行检查,32位程序,开启了nx本地试运行一下,看看大概的情况,看交互式的情况,知道存在格式化字符串漏洞32位ida载入利用思路:找到格式化字符的偏移量打印print@got的地址,泄露libc,计算system的地址将print@got修改成system,传入参数‘/bin/bash\x00’利用过程:找到偏移为6打印print@got的地址printf_got=elf.got["printf"]payloa

2021-03-08 14:09:04 849 1

原创 Wireshark分析流量包案例

wireshark抓包工具常用筛选命令方法测试文件:https://pan.baidu.com/s/1QuMdefZHSqlaLSHaMVGb4w提取码:tmjs使用Wireshark查看并分析attack.pcapng数据包文件,通过分析数据包attack.pcapng找出黑客的IP地址,并将黑客的IP地址作为FLAG(形式:[IP地址])提交:解:首先筛选一下http协议的get传参和post传参的数据包http.request.method==GET 发现了两个登录界面的数据包,

2021-03-08 14:06:58 11223 8

空空如也

空空如也

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

TA关注的人

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