0%

欢迎 pwn 分区(P盘)

今天再次尝试 wsl+gdb 调试,照舅失败

于是我搞了一个 “P分区”


wsl+gdb,不行. ❌

咕了很久还是想继续尝试gdb,wsl+gdb当然是最方便的一种方式了,打开命令行就可以用,都不需要开启 vmware。

但是很快的就遇到了问题。首先就是 wsl (我用的是Ubuntu16.04) 装好时是不支持32位程序的,通过搜索知道了安装启动 binfmt-support 就可以,让 wsl 能运行32位程序。

让64位的WSL(windows 子 linux系统)支持运行32位程序 - 简书

正准备开心的打开gdb调试,布星了。

在 gdb 里 start 可以,但是 ni 就不行了:

image-20200804185229605

1
2
3
4
5
6
pwndbg> ni
Warning:
Cannot insert breakpoint 1.
Cannot access memory at address 0x80484a0

Command aborted.

查询了一波,感觉大概可能应该或许是 wsl 他就不能调试32位程序?

image-20200804184759075

你品你细品,wsl 装好的时候是只有64位程序支持的,32位直接给砍掉了,如果要运行32位还需要安装 binfmt-support ,32位程序仿佛不是 wsl 本来所支持的功能?

你品你再品,gcc编译成32位程序还需要加 -m32 编译参数,那么默认编译出来就是64位?32位是不是”过时”了?

阅读 binfmt-support 的介绍,可以看到

https://packages.debian.org/stretch/binfmt-support 上,写道:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
==========原文==========
软件包:binfmt-support(2.1.6-2)
Support for extra binary formats
The binfmt_misc kernel module, contained in versions 2.1.43 and later of the Linux kernel, allows system administrators to register interpreters for various binary formats based on a magic number or their file extension, and cause the appropriate interpreter to be invoked whenever a matching file is executed. Think of it as a more flexible version of the #! executable interpreter mechanism.

This package provides an 'update-binfmts' script with which package maintainers can register interpreters to be used with this module without having to worry about writing their own init.d scripts, and which sysadmins can use for a slightly higher-level interface to this module.

标签: 系统管理: 核心或模块, 软件开发: 解释器, 实做语言: implemented-in::perl, interface::commandline, 角色: 程序, 范围: 实用程序, 应用程序集: Debian
==========google机翻==========
软件包:binfmt-support(2.1.6-2)
支持额外的二进制格式
版本2.1.43和更高版本的Linux内核中包含的binfmt_misc内核模块,使系统管理员可以根据幻数或文件扩展名注册各种二进制格式的解释器,并在匹配文件时调用适当的解释器。被执行。将其视为#的更灵活版本!可执行解释器机制。

该软件包提供了一个'update-binfmts'脚本,软件包维护者可以使用该脚本注册要与此模块一起使用的解释器,而不必担心编写自己的init.d脚本,并且sysadmin可以将其用于稍高级别的接口。模块。

标签: 系统管理: 核心或模块, 软件开发: 解释器, 实做语言: implemented-in::perl, interface::commandline, 角色: 程序, 范围: 实用程序, 应用程序集: Debian

http://binfmt-support.nongnu.org/ 上,写道:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
==========原文==========
binfmt-support
The binfmt_misc kernel module, contained in versions 2.1.43 and later of the Linux kernel, allows system administrators to register interpreters for various binary formats based on a magic number or their file extension, and cause the appropriate interpreter to be invoked whenever a matching file is executed. Think of it as a more flexible version of the #! executable interpreter mechanism.

binfmt-support provides an update-binfmts script with which package maintainers can register interpreters to be used with this module without having to worry about writing their own init.d scripts, and which sysadmins can use for a slightly higher-level interface to this module.

Versions 1.2.0 and above also support a mechanism for extending the range of binary formats among which the kernel can distinguish with the aid of a userspace helper, called a detector.

The source code to binfmt-support can be retrieved from its Git repository (if you don't have Git, follow the link for installation instructions).

This Web page is created and maintained by Colin Watson.
Last modified: $Date: 2017/07/09 13:30:47 $
==========google机翻==========
binfmt-支持
binfmt_miscLinux内核版本2.1.43和更高版本中包含的内核模块,允许系统管理员基于幻数或其文件扩展名注册各种二进制格式的解释器,并在匹配文件被调用时调用适当的解释器。被执行。可以将其视为#!可执行解释器机制的更灵活版本 。

binfmt-support提供了一个update-binfmts 脚本,程序包维护人员可以使用该脚本来注册要与此模块一起使用的解释程序,而不必担心编写自己的 init.d脚本,并且sysadmins可以将其用于该模块的更高级别的界面。

1.2.0及更高版本还支持一种扩展二进制格式范围的机制,内核可以借助一种称为检测器的用户空间助手来区分二进制格式 。

binfmt-support可以从其Git存储库中检索要获取 的源代码(如果您没有Git,请遵循链接以获取安装说明)。

该网页由Colin Watson创建和维护 。
上次修改时间:$日期:2017/07/09 13:30:47 $

这两个网页说,binfmt-support 是32位程序的解释器,安装后将32位程序绑定使用它打开。这是不是有点像虚拟机风格? gdb和Linux内核应该还是不能支持32位(我猜的)


vmware,好用!✅

不多说了吧,VMware装一个Ubuntu来进行调试,肯定没问题

但是我还是想快速的访问Windows上那些文件夹。

https://cn.bing.com/search?q=vmware添加共享文件夹

由于我会常用到下载文件夹,所以把下载文件夹映射到share目录。

image-20200804221417612

Linux里面,文件夹在哪儿呢?

/mnt/hgfs/share

但是文件管理器进入这个目录,还是不能右键新建文件夹。

ls -al 查看权限,chmod 777 share授予最宽的权限,再次 ls -al查看权限

image-20200804222350672

image-20200804222407950

设置完后就可以像正常使用一样读写这个文件夹了,所做的更改,在Windows上全部同步。

可是,这个目录不太好打啊

我在 ~/.bash_aliases 里设置了share,来方便地命令行打开文件夹 alias share="cd /mnt/hgfs/share"

那么下次运行share命令就可以了,

(感觉还是哪里不太方便?)


P盘 与 /pwn

干脆把那个文件夹抽出来,用一个分区存?

好处:

  1. Windows上好找,单独一个分区呢,二进制文件放里面就好啦
  2. 虚拟机里好找,vmware设置挂在文件夹时输入分区就行了,不用担心如果文件夹被移动,会导致虚拟机内不可用
  3. wsl 里好找,众所周知,wsl 和Windows共享文件系统,是通过把Windows上的盘符,挂载到 /mnt,那么P盘对应就是 /mnt/p,可以说目录已经灰常好打了
  4. 稳定不容易坏,他就是个单独分区,不存在移动文件夹导致找不到的问题,只要这个盘还在,就能用(盘不在就创建一个分区呗)

在此电脑,右键,管理,磁盘管理,搞个新分区,我选的4G大小差不多了。大概像酱紫:

image-20200804164302218

操作完之后就多出来一个P分区。

这里有一点经验教训就是新建分区后进去然后打开wsl是不行的,wsl还不能识别到分区,如果要识别,需要重启wsl,在管理员权限的cmd里运行:

1
2
net stop LxssManager
net start LxssManager

虚拟机设置挂载文件夹,同上文。然后运行 ls -al 就可以看到 p 文件夹:

image-20200804234159560

这次就,不设置 alias 命令了吧,直接,把这个文件夹,映射到根目录下的 /pwn

创建符号链接

1
sudo ln -s /mnt/hgfs/p /pwn

image-20200804234628952

运行 ls -al

image-20200804234748499

来试一下好了没,运行 cd /pwn

image-20200804234951886

(这里新建p分区的时候应该应该选择exFat文件系统的。。)

(然后用 DiskGenius 格式化成了exFat。亲测可用)

image-20200805000450165

听说win10可以直接读取ext4 U盘,硬盘应该也快了。我试试格式化成ext4格式。

读取不了,资源管理器都不显示

尝试安装了一个 Ext2Fsd-0.69.exe,在 https://sourceforge.net/projects/ext2fsd/ 下载的

安装完成需要重启电脑,不敢重启,就算了不试了

格式化回exFat格式,可正常使用

下一步,放进文件

image-20200805002113063

下一步,在Linux中使用

image-20200805002130947

坚持原创技术分享,您的支持将鼓励我继续创作!