【pwnable.kr】 asm seccomp sadbox 64位shellcode 读 flag

2024-03-31 18:08

本文主要是介绍【pwnable.kr】 asm seccomp sadbox 64位shellcode 读 flag,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

image-20181122132244133

题目信息

nc之后查看信息如下。根据readme提示,本关是要求登陆服务器后,nc 9026端口连接asm程序来读flag。flag文件名很长。

image-20181122131906999

看了源码发现程序做了如下操作。mmap了一块内存读取shellcode并执行,开启了seccomp沙箱[1],限制只能使用open read write exit exit_group系统调用。因此本关就是利用这些系统调用来写64位下读flag的shellcode。

可以通过cat /proc/self/status |grep -i seccomp查看当前系统是否打开了seccomp沙箱。

image-20181122131821074

exp

读取flag的shellcode思路如下:

image-20181122132001925

x64的部分系统调用参考[2]。本来自己手写汇编,push 字符串到栈上,再调用pwntools的asm生成机器码。遇到了两个问题:

  • 第一个问题:即使设置了arch为amd64,pwntools asm(push number),number如果超过4字节会报错。用mov再push解决 。
  • 第二个问题:64位下调用系统调用需要用syscall而不是int 0x80。

部分exploit:

image-20181122132047995

image-20181122131444774

PS:这题之前没有调试,间隔了很久才写了wp,感兴趣的可以去做做pwnable.tw上的orw,一个是32位,一个64位,利用思路一样。

此外,以后代码或者输出准备尽量用图片了,虽然占用一点空间,但是读起来舒服一点。

参考

  1. seccomp https://blog.csdn.net/mashimiao/article/details/73607485
  2. syscall x64 http://www.csyssec.org/20161231/systemcall64list/

这篇关于【pwnable.kr】 asm seccomp sadbox 64位shellcode 读 flag的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/864970

相关文章

NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64

转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=190176&id=4234854 一 前言 当管理大量连接时,特别是只有少量活跃连接,NGINX有比较好的CPU和RAM利用率,如今是多终端保持在线的时代,更能让NGINX发挥这个优点。本文做一个简单测试,NGINX在一个普通PC虚拟机上维护100k的HTTP

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划

【Python从入门到进阶】64、Pandas如何实现数据的Concat合并

接上篇《63.Pandas如何实现数据的Merge》 上一篇我们学习了Pandas如何实现数据的Merge,本篇我们来继续学习Pandas如何实现数据的Concat合并。 一、引言 在数据处理过程中,经常需要将多个数据集合并为一个统一的数据集,以便进行进一步的分析或建模。这种需求在多种场景下都非常常见,比如合并不同来源的数据集以获取更全面的信息、将时间序列数据按时间顺序拼接起来以观察长期趋势等

ASM 10G 基于RMAN 迁移

ASM 10G 基于RMAN 迁移 场景 单节点基于10G R2 的数据库,其数据文件及日志文件均存放在ASM 里,现在为业务需求,将此数据库做迁 移,迁移到另个机房,但是两个机房的网络是通畅的,为尽量减少数据的丢失及平稳迁移和经济实惠,迁 移时,数据库需停应用 工具 本次采用RMAN 的duplicate 命令来进行迁移,运用此命令简化复杂度; 一、源库和目标库的

Beyond Compare4.2.4 64位OS最新密钥

亲测可用,拿来主义 6TTCoWi2N0Pv+o2HGfqUpZfuaMhtf2zX0u1OuNeqTYkKKWh-CKwBWkPUG3+CiAQ2q4MNPbf0t8+gmPdo+Vyw64aU-zuQQt9d7Q6EcJ+T42by0E+kxf+q3QLs40H+RD3h5OLjFGpxClodRnTCNoAM39xsWm2aHZI0Z9KdXzLo1fo1OdNlaptoK17SsxNK-

leetcode : 64 最小路径和 动态规划

64. 最小路径和 题目链接https://leetcode.cn/problems/minimum-path-sum/ 题目描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例: [1,3,1][1,5,1][4,2,1] 输出: 7 解释: 因为路径 1→3→1

[LeetCode] 64. Minimum Path Sum

题:https://leetcode.com/problems/minimum-path-sum/description/ 题目 Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers

《Linux运维总结:基于X86_64+ARM64架构CPU使用docker-compose一键离线部署consul 1.18.1容器版分布式ACL集群》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》 一、部署背景 由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统,而作为基础组件中的consul 针对不同的客户环境需要多次部署集群,作为一个运维工程师,提升工作效率也是工作中的重要一环。所以我觉得有必要针对 x86_64 + ARM64 CPU架构cons

Alibaba Cloud Linux 3.2104 LTS 64位 安装php8

目录 前言1、首先,更新系统的软件包索引:2、安装必要的软件包以添加更多软件,包括EPEL和Remi存储库:3、启用PHP 8.0的Remi仓库:4、安装PHP 8.0:5、安装PHP 8.0的扩展(根据需求安装):6、安装完成后,确认PHP版本:7、启动PHP-FPM并设置开机自启:总结 前言 安装PHP 8.0的步骤如下: 1、首先,更新系统的软件包索引: sud

【C++】win7 64下VC++6.0(Unable to register this add-in because its DLLRegisterServer return an error)

 FileTool.exe用于替换 Visual C++ 使用开发人员 Studio 对象模型中的打开和添加到项目菜单项。也是一个修复 VC6.0打开文件时出错退出的插件。 1. 下载FileTool.exe,并解压 2. 打开VC6.0,点击File-Open Workspace,选择刚解压出来的FileTool.dsw,并确定 3. 点击Bulid-Build FileTool.