Error[8]: Undefined offset: 2, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我有一个简单的脚本,读取用户的输入(密码)并将其保存到变量 read -s -p "password: " PASSWD; printf "%b" "\n" 显然这不安全,因为它存储在内存中的明文中,并且可以通过核心转储访问它?我如何从内存中读取此变量. 请注意,我不是在寻找更好的解决方案我只是好奇,如果我能真正读取这个密码/变量. root总是可以(几乎所有的值总是)读取进程内存,因此无论它是如 我有一个简单的脚本,读取用户的输入(密码)并将其保存到变量
read -s -p "password: " PASSWD; printf "%b" "\n"

显然这不安全,因为它存储在内存中的明文中,并且可以通过核心转储访问它?我如何从内存中读取此变量.
请注意,我不是在寻找更好的解决方案我只是好奇,如果我能真正读取这个密码/变量.

解决方法 root总是可以(几乎所有的值总是)读取进程内存,因此无论它是如何存储的,都可以提取它(即使密码被发送到安全的存储设备,如智能卡,总会有一个小窗口,ibutton或TPM硬件).

在您的示例中,PASSWD将存储在本地变量中.进程的环境变量存储在/ proc / PID / environ中,可由该用户或root读取:

[choad ~]$read -s -p "password: " PASSWD; echopassword:[choad ~]$echo $PASSWDsoopersekrit[choad ~]$ls -al /proc/self/environ-r-------- 1 michael michael 0 May  6 14:46 /proc/self/environ[choad ~]$grep PASSWD /proc/self/environ[choad ~]$export PASSWD[choad ~]$tr '[+++]0' '\n' < /proc/self/environ | grep PASSWDPASSWD=soopersekrit[choad ~]$echo $613[choad ~]$gdb -p 19613(gdb) info proc mapPings     0x91f2000  0x9540000   0x34e000          0           [heap](gdb) dump memory /tmp/bash.mem 0x91f2000 0x9540000[choat ~]$strings /tmp/bash.mem |grep ^PASSWDPASSWD=soopersekritPASSWD=soopersekrit

N.B.:某些发行版启用了Yama的ptrace_scope限制,这些限制会阻止附加到同一用户拥有的任意进程.

N.B.:最谨慎的是通过命令行传递密码.没有什么可以作为全世界都无法知道的论点.命令行不受保护.

总结

以上是内存溢出为你收集整理的linux – 从内存中读取变量全部内容,希望文章能够帮你解决linux – 从内存中读取变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
linux – 从内存中读取变量_系统运维_内存溢出

linux – 从内存中读取变量

linux – 从内存中读取变量,第1张

概述我有一个简单的脚本,读取用户的输入(密码)并将其保存到变量 read -s -p "password: " PASSWD; printf "%b" "\n" 显然这不安全,因为它存储在内存中的明文中,并且可以通过核心转储访问它?我如何从内存中读取此变量. 请注意,我不是在寻找更好的解决方案我只是好奇,如果我能真正读取这个密码/变量. root总是可以(几乎所有的值总是)读取进程内存,因此无论它是如 我有一个简单的脚本,读取用户的输入(密码)并将其保存到变量
read -s -p "password: " PASSWD; printf "%b" "\n"

显然这不安全,因为它存储在内存中的明文中,并且可以通过核心转储访问它?我如何从内存中读取此变量.
请注意,我不是在寻找更好的解决方案我只是好奇,如果我能真正读取这个密码/变量.

解决方法 root总是可以(几乎所有的值总是)读取进程内存,因此无论它是如何存储的,都可以提取它(即使密码被发送到安全的存储设备,如智能卡,总会有一个小窗口,ibutton或TPM硬件).

在您的示例中,PASSWD将存储在本地变量中.进程的环境变量存储在/ proc / PID / environ中,可由该用户或root读取:

[choad ~]$read -s -p "password: " PASSWD; echopassword:[choad ~]$echo $PASSWDsoopersekrit[choad ~]$ls -al /proc/self/environ-r-------- 1 michael michael 0 May  6 14:46 /proc/self/environ[choad ~]$grep PASSWD /proc/self/environ[choad ~]$export PASSWD[choad ~]$tr '0' '\n' < /proc/self/environ | grep PASSWDPASSWD=soopersekrit[choad ~]$echo $613[choad ~]$gdb -p 19613(gdb) info proc mapPings     0x91f2000  0x9540000   0x34e000          0           [heap](gdb) dump memory /tmp/bash.mem 0x91f2000 0x9540000[choat ~]$strings /tmp/bash.mem |grep ^PASSWDPASSWD=soopersekritPASSWD=soopersekrit

N.B.:某些发行版启用了Yama的ptrace_scope限制,这些限制会阻止附加到同一用户拥有的任意进程.

N.B.:最谨慎的是通过命令行传递密码.没有什么可以作为全世界都无法知道的论点.命令行不受保护.

总结

以上是内存溢出为你收集整理的linux – 从内存中读取变量全部内容,希望文章能够帮你解决linux – 从内存中读取变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1034007.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存