首页 > 其他分享 >[Pwn之路]根据所给库,获得远程同环境——使用patchelf的正确姿势

[Pwn之路]根据所给库,获得远程同环境——使用patchelf的正确姿势

时间:2023-07-31 22:23:33浏览次数:43  
标签:0ubuntu3.1 amd64 libc pwn https Pwn patchelf 远程

原文:https://www.freebuf.com/sectool/366854.html
存自己这里方便看。

0x00 前言

如何修改本地pwn文件和题目所给环境一致,从而进行调试,这是从学习堆开始就遇到的心头之患。从那以后,直到今天参加完mini LCTF,为了复现一道题目才把这个问题解决掉。网上的博客,参差不齐,由于本人不才,导致都不起作用。故在某学长在校内论坛之中找到正确方法,从而解决了这一心头之患。

并且这里面有一些小问题,也希望请教一下大家。问题我会用Q来表示,欢迎捕捉!

0x01 安装所需软件

glibc-all-in-one

最快的方式是:

git clone https://github.com/matrix1001/glibc-all-in-one.git 
cd glibc-all-in-one 
chmod a+x build download extract

如果不行(我就是不行…),进入下方链接。

ps:后来发现是ipv6掉认证了

image

点击download下载,手动解压

然后运行sudo python update_list(如果遇到报错请检查网络问题,我在那里卡了比较久,注意要用direct连接。这里不明白什么意思的话不用管我),接着cat list得到包名。

image

patchelf

我是archlinux,yay patchelf就可以安装好,所以在这里没有遇到什么问题。其他子系统,可以自行搜索,网上的教程很详细,大家可以自行解决。

0x02 确定patch什么库

修改:新增快方法

在有题目所给libc.so.6的目录下直接输入strings libc.so.6 |grep Ubuntu 即可。
image

1.确定偏移用于搜索

使用ROPgadget

这里的思路我的比较简单,ROPgadget用来查str_bin_sh的地址。

ROPgadget --binary libc.so.6 --string '/bin/sh'

得到

image
Q1:那么有没有办法用ROP来查printf,system之类的地址呢?我暂时没查到相关命令,如果有的话会很简单,不需要接下来的步骤。

使用pwntools

from pwn import *

p = process('./pwn')
libc = ELF('./libc.so.6')
elf = ELF('./pwn')

system = libc.sym['system']#这里的system可以替换成别的函数,用于搜索偏移
print(hex(system))
if args.G:
    gdb.attach(p)

p.interactive()

运行。
image

于是我们得知,system的偏移是0x50d60

3.搜索库

推荐两个网站一起用,找不到的话换另一个,一定要多搜索几个偏移确保没错。其实也可以使用libc-database,不过这个不是这篇文章的重点。

https://libc.rip/
https://libc.blukat.me/

image
得到库名。

0x03 下载库

运行cat list找到2.35-0ubuntu3.1_amd64。
image
cd到年装的glibcallinone的文件夹下。

输入./download 2.35-0ubuntu3.1_amd64即可。
但是我一开始不太一样,我遇到了问题如下:

~/ctf/tools/glibcallinone » ./download 2.35-0ubuntu3.1_amd64

Getting 2.35-0ubuntu3.1_amd64 -> Location:
https://mirror.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/glibc/libc6_2.35-0ubuntu3.1_amd64.deb
-> Downloading libc binary package Failed to download package from https://mirror.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/glibc/libc6_2.35-0ubuntu3.1_amd64.deb

于是只能自己登入,然后解压。

后来发现是没安装wget且校园网ipv6掉认证,重新登陆一下后成功。
image

0x04 patch!!

找到你的ld和libc.so.6文件。
image
找到他们的目录,然后在pwn题目文件目录下运行以下两条命令:

patchelf --set-interpreter 你的文件目录/ld-linux-x86-64.so.2 ./pwn

patchelf --add-needed 你的文件目录/libc.so.6 ./pwn

patchelf --add-needed 你的目录/libpthread.so.0 ./pwn (如果提示没有libpthread.so.0的话)

大功告成。

尾声

动态调试是pwn中必不可少的重要步骤,而patch则是让我们能够动态调试的必由之路。欢迎有任何问题在评论区提出,我们将继续努力走向更高处。

当你没有符号表?
https://loora1n.github.io/2022/11/01/【祥云杯2022】PWN-WriteUp-protocol/

标签:0ubuntu3.1,amd64,libc,pwn,https,Pwn,patchelf,远程
From: https://www.cnblogs.com/9man/p/17581934.html

相关文章

  • Apache RocketMQ 远程代码执行漏洞(CVE-2023-37582)
    ​漏洞简介ApacheRocketMQ是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。CVE-2023-37582中,由于对CVE-2023-33246修复不完善,导致在ApacheRocketMQNameServer存在未授权访问的情况下,攻击者可构造恶意请求以RocketMQ运行的系统用户身份执行命令。影响版本Apac......
  • rsync 远程同步
    目录一、rsync同步简介二、rsync同步1.同步方式2.备份的方式三、rsync常用命令四、配置源的两种表达方法1.格式一2.格式二五、配置rsync下行同步(定时同步)1.环境2.配置rsync源服务器3.发送端4.检测六、rsync实时同步(上行同步)1.定期同步的不足2.实时同步的优点3.......
  • rsync 远程同步
    rsync远程同步可以完成数据的备份,确保数据的安全性,而且是增量备份,减少数据的存储大小。rsync是一个快速和非常方便的文件复制工具。他能本地复制,远程复制,或者远程守护进程方式复制。  目录一、rsync概述二、rsync作用三、rsync应用场景四、rsync命令五、搭建rsync六、......
  • AWD-PWN流量监控与抄流量反打
    RE手在AWD中比较做牢,队伍里也没pwn手,在awd出现pwn靶机比较坐牢。之前都不知道pwn靶机可以抄流量反打。参考pwn_waf:https://github.com/i0gan/pwn_waf/tree/main该waf有四个模式CATCH模式只是简单的捕获被攻击的交互流量,可以在日志路径下查看。I0GAN模式是一种防御模式,可以防......
  • 关于视频监控平台云台远程控制的重要意义
    关于视频监控平台云台远程控制的重要意义SkeyeVSS国标视频融合云平台可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、集群、电子地图、H.265视频自动转码、智能分析等视频......
  • wordpress pwnscriptum
    vulhub/wordpress/pwnscriptum/README.zh-cn.mdatmaster·vulhub/vulhub·GitHub(191条消息)漏洞复现-Wordpress4.6PwnScriptumRCE命令执行_wordpressrce_amingMM的博客-CSDN博客1、介绍名称:Wordpress4.6任意命令执行漏洞编号:原理:漏洞缺陷处在后台找回密码的地......
  • 在IDEA中使用Git(远程仓库操作)
     直接右击,就可以查看远程仓库 查看远程仓库的别名和地址 ADD添加远程仓库,一个本地仓库其实可以对应多个远程仓库 输入需要添加的远程仓库的别名和地址 -是删除,这里的删除只是代表与该仓库断开连接,不是删除了该远程仓库 右击就可以直接推送到远程仓库 左侧为......
  • 如何使用iptables防火墙模拟远程服务超时
    前言超时,应该是程序员很不爱处理的一种状态。当我们调用某服务、某个中间件、db时,希望对方能快速回复,正确就正常,错误就错误,而不是一直不回复。目前在后端领域来说,如java领域,调用服务时以同步阻塞调用为主,此时一般会阻塞当前线程,等待结果。如果我们设置了超时时间还好,一段时间等不......
  • 《面试1v1》如何提高远程用户的吞吐量
    面试官:嗨,候选人!听说你对Kafka吞吐量有一些见解?候选人:嗨,面试官!是的,我对这个话题有一些想法。你知道吗,Kafka是一个强大的分布式消息系统,但是在处理远程用户时,我们需要一些技巧来提高吞吐量。面试官:哦,真的吗?那你能给我一些具体的例子吗?候选人:当然!一个简单的方法是通过调整Kafk......
  • 教你一文教你使用自己的域名远程访问内网群晖NAS+6.X【内网穿透】
    文章目录使用自己的域名远程访问内网群晖NAS6.X【内网穿透】使用自己的域名远程访问内网群晖NAS6.X【内网穿透】在之前的文章中,我们向大家演示了如何使用cpolar,创建一条固定的、能够在公共互联网登录内网群晖NAS的数据隧道。这条隧道已经能够应对大多数情况。不过我们能看到,在......