劫持TLS绕过canary pwn89
劫持TLS绕过canary pwn88
首先了解一下这个东西的前提条件和原理
前提:
溢出字节够大,通常至少一个page(4K)
创建一个线程,在线程内栈溢出
原理:
在开启canary的情况下,当程序在创建线程的时候,会创建一个TLS(Thread Local Storage),这个TLS会存储canary的值,而TLS会保存在stack高地址的地方。
那么,当我们溢出足够大的字节覆盖到TLS所在的地方,就可以控制TLS结构体,进而控制canary到我们想要的值,实现ROP
然后具体写一下这个题目,毫无疑问canary是开启的

ida打开看一下

main函数里面就这些,我来解释一下pthread_create这个函数,相当于创建了一个进程去执行start函数,而pthread_join让
一个线程等待另一个线程结束。如果代码中没有pthread_join主线程就会很快结束从而使整个进程结束,从而使创建的线程没有机会开始 执行就结束了。
加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。
跟进start函数看一下

跟进lenth和readn


相当于,我们一开始输入一个长度,然后readn函数会把我们再次输入的东西放入s中,因为长度最大可以到0x10000,而s长度只有0x1010所以有栈溢出
有canary保护我们可以通过覆盖高地址来覆盖掉TLS,然后就是正常的ROP然后栈迁移到bss段执行one_gadget
exp:

这里覆盖的长度应该大于等于0x1900,否则可能无法覆盖掉TLS进而覆盖掉canary
劫持TLS绕过canary pwn89的更多相关文章
- 通过格式化字符串漏洞绕过canary
1.1 canary内存保护机制 1.1.1 canary工作原理 canary保护机制类似于/GS保护机制,是Linux下gcc编译器的安全保护机制之一,在栈中的结构如下图所示: 在函数 ...
- CTF必备技能丨Linux Pwn入门教程——stack canary与绕过的思路
Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/am ...
- Canary机制的绕过
目标程序下载 提取码:8ypi 1.检查程序开启了哪些安全保护机制 Canary与NX开启了 Canary机制简介 64位的canary机制,会在函数头部添加: mov rax,QWORD PTR f ...
- 使用mitmf 来绕过HSTS站点抓取登陆明文
使用mitmf 来绕过HSTS站点抓取登陆明文 HSTS简介 HSTS是HTTP Strict Transport Security的缩写,即:"HTTP严格安全传输".当浏览器第 ...
- UAC绕过初探
笔者最近在学习UAC绕过的技术,通过对其他师傅的文章进行总结,成功利用DLL劫持绕过了UAC,并且可以以High Mandatory Level来启动进程.在此记录下学习过程,笔者也是初次接触,若各位 ...
- i春秋公益赛之BFnote
题目链接:https://buuoj.cn/challenges#gyctf_2020_bfnote 首先检查程序开的保护: 发现程序只开了canary和NX保护,接下来查看IDA反汇编出来的为代码, ...
- OAuth 2.0攻击面与案例总结
本文整理了OAuth 2.0的攻击面+实际案例+辅助测试代码. OAuth流程 本文以两种广泛使用的方案为标准展开..如对流程不了解,请先移步学习: 理解OAuth 2.0 Authorization ...
- DEDECMS数据库执行原理、CMS代码层SQL注入防御思路
我们在上一篇文章中学习了DEDECMS的模板标签.模板解析原理,以及通过对模板核心类的Hook Patch来对模板的解析流量的攻击模式检测,达到修复模板类代码执行漏洞的目的 http://www.cn ...
- [转] GCC 中的编译器堆栈保护技术
以堆栈溢出为代表的缓冲区溢出已成为最为普遍的安全漏洞.由此引发的安全问题比比皆是.早在 1988 年,美国康奈尔大学的计算机科学系研究生莫里斯 (Morris) 利用 UNIX fingered 程序 ...
- GCC 中的编译器堆栈保护技术
GCC 中的编译器堆栈保护技术 前几天看到的觉得不错得博客于是转发了,但这里我补充一下一些点. GCC通过栈保护选项-fstack-protector-all编译时额外添加两个符号,__stack_c ...
随机推荐
- 案例分享:Qt便携式致病菌快速检测仪(账号管理、实验过程、二维图表、历史数据、通讯管理、实验报告、中英文等等)
需求 根据提供的用户原型设计.ui设计.通讯协议研发便携式致病菌快速检测仪器软件. 100%还原ui. 基本主功能(推荐visio:★★★☆☆,前期主流程需求整理) Dem ...
- Qt+MPlayer音乐播放器开发笔记(二):交叉编译MPlayer以及部署到开发板播放演示
前言 在ubuntu上arm交叉编译MPlayer播放器,并部署到开发板播放音乐. Demo Mplayer MPlayer是一款开源多媒体播放器,以GNU通 ...
- 【LeetCode回溯算法#03】电话号码的字母组合(数字映射字母)
电话号码的字母组合 力扣题目链接(opens new window) 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任 ...
- 【Azure API 管理】APIM中的Policy是否有调用速率的方法(熔断机制)
问题描述 APIM中的Policy是否有调用速率的方法(熔断机制) 问题解答 APIM的限制速率的方式有以下方式: 检查 HTTP 标头 - 强制 HTTP 标头必须存在和/或强制采用 HTTP 标头 ...
- 链接服务器导致SQL Server停止响应
概要 如果多个实例中同时存在数据源为对方实例的链接服务器,并且开启了"分发服务器"的属性,您可能会遇到这种情况. 1 现象 14:31时,在SSMS中检查HIS实例是否有复制订阅时 ...
- Mysql进阶目录
一:Mysql字符集问题 二:Mysql_Sql模式 三:Mysql的数据目录 四:Mysql用户管理 五:Mysql权限管理 六: 权限表 七: 角色管理 八: Mysql配置文件的使用 九: My ...
- 从华为WeAutomate数字机器人论坛,看政企领域的“政务新智理”
从华为WeAutomate数字机器人论坛,看政企领域的"政务新智理" 从政务治理到"政务新智理",华为WeAutomate在政务领域的思考与实践 华为WeAut ...
- IDEA 报错 project is already registered
1.环境&背景 有时候IEDA下一个工程中想引入多个项目,只能添加多个modules. 版本:IDEA 2020.2 构建:gradle 2.问题 有时候删掉了某个项目再导入时报错 proje ...
- PDF/Excel文件预览功能完整实现-java版本
新需求 最近接到一个新的需求,说是之前直接下载的PDF文件或者是Excel文件,现在不能直接下载,需要实现在线预览功能. 前端人员拿到这个需求后,去看了一下以前的代码,以前调用的下载接口和PDF文件预 ...
- 英语单词 重读 注意第六条 类似tion前面的重读这种的
单词音节重读的10个基本判断规则: 1.一个单词只有一个重读音节 无论该单词有多少个音节(syllable),其重读音节只有一个,而且都在元音上,辅音不重读.单音节词也重读,只是省略了重音符号.如:b ...