首页 > 其他分享 >命令执行

命令执行

时间:2023-11-13 19:36:56浏览次数:33  
标签:语句 文件 IFS cat 命令 执行

命令执行


php命令执行函数

system()
passthru()
exec()
shell_exec()
popen()/proc_open()
反引号``

读取文件命令

linux

more : 类似 cat ,不过会一页一页显示(只能向后翻页)
less : 与 more 类似,但可向前翻页
cat  : 
tac  : 从最后一行开始显示,可以看出 tac 是 cat 的反向显示
head : 查看文件开头几行内容(默认10)
tail : 查看文件尾几行
nl   : 显示文件内容的时候,顺便输出行号
od   : 以不同进制的方式读取文件内容
vi   : 一种编辑器,这个也可以查看
vim  : 一种编辑器,这个也可以查看
sort : 对文件排序(输出排序后内容)
uniq : 去除重复行(输出去重后内容)
rev  : 反转每一行内容(每行独立反转,输出反转后内容)
cut  : 输出剪切内容(cut -b 1-10 1.txt),具体用法去搜
sed  : sed p 1.txt
man  : 直接对文本运行可以看到文本内容(未复现成功)
paste: 把每个文件以列对列的方式合并,(一个文件就相当于直接显示原来的)
grep : 查找文件里符合条件的字符串(grep flag 1.txt)
dd   : 可读取文件数据,if=1.txt
diff : 比较两文件(输出不同的地方,需获得另一个文件)
xxd  : 将文件内容转换为某进制

管道符

linux

; 执行完前面语句后,执行后面语句(前面失败也执行) ping 127.0.0.1;whoami

| 显示后面语句结果 ping 127.0.0.1|whoami(前面的命令执行的结果会作为后面命令的输入)

|| 当前面语句出错,执行后面语句(没出错不会执行)

& 前面语句真假都执行后面语句

&& 前面语句为假直接出错,前面为真才执行后面语句

windows

与linux

| 显示后面语句结果 ping 127.0.0.1|whoami

|| 当前面语句出错,执行后面语句(没出错不会执行)

& 前面语句真假都执行后面语句

&& 前面语句为假直接出错,前面为真才执行后面语句


> 输入(覆盖),>> 追加

< file.txt # 将 file.txt 文件的内容作为 cat 命令的输入 ,<< +多行文本


绕过

文章

CTF里读取文件相关知识点总结 - 先知社区 (aliyun.com)


空格绕过

{} : 用于生成和展开一系列的字符串或命令参数

echo {apple,banana,orange}  # 输出: apple banana orange
{cat,/flag} == cat /flag

$:变量引用($HOME:家目录)、命令替换($(data:日期))、环境变量引用($IFS)、其他($'\132':解析编码(ANSI-C转义))

<  <>   %20(space)  %09(tab)  %0a(\n)
$IFS $IFS$1 $IFS$9 ${IFS} 

${IFS} 是在Shell中使用变量替换,当Shell遇到${IFS}时,它会将${IFS}替换为环境变量$IFS的值


无字母数字绕过

利用shell脚本变量构造无字母数字命令 - 先知社区 (aliyun.com)


$补充

shell脚本中$的多种用法

变量名 含义
$0 脚本本身的名字
$1 脚本后所输入的第一串字符
$2 传递给该shell脚本的第二个参数
$* 脚本后所输入的所有字符’westos’ ‘linux’ ‘lyq’
$@ 脚本后所输入的所有字符’westos’ ‘linux’ ‘lyq’
$_ 表示上一个命令的最后一个参数
$# #脚本后所输入的字符串个数
$$ 脚本运行的当前进程ID号
$! 表示最后执行的后台命令的PID
$? 显示最后命令的退出状态,0表示没有错误,其他表示由错误

数字绕过

bash对于整数的表示形式是[base#]n的形式,比方说如果一个十进制数4,可以表示为二进制数100,那么在bash里可以表示为2#100

${##} 表示当前命令行参数的个数,${##}是1:#是计算字符串长度,两个#中,第一个#是计算字符串长度 第二个#是字符串的名字。$#的值是0,字符串长度为1,所以${##}是1(不确定是不是这样解释)


/绕过

${PATH:0:1}    //切片操作,取path的第一个字符/

${PWD:0:1}、${HOME:0:1}、${SHELL:0:1},可以取其它替代


文件名

cat /f* *匹配任意个字符

cat /f??? ? 匹配一个字符

cat /[9-q][9-q][9-q][9-q] 正则匹配[...]

cat /$'\146\154\141\147' 编码转换

echo "Y2F0IC9mKg==" | base64 -d |bash 管道符利用 -d为解码 最后给bash解释执行(可用其他编码)

linux里,ca''t、ca\t、ca""t和cat是等效的

b=ag;a=fl;cat $a$b


标签:语句,文件,IFS,cat,命令,执行
From: https://www.cnblogs.com/xhzccy/p/17829913.html

相关文章

  • 使用 npm config set script-shell 实现跨平台的脚本执行需求
    npmconfigsetscript-shellC:\\app\\Git20180223\\bin\\bash.exe这个命令的准确含义是设置npm的脚本(shell)执行环境为"C:\app\Git20180223\bin\bash.exe"。这个命令用于修改npm的配置,具体来说,它修改了npm的一个配置项,该配置项用于指定在执行npm脚本时使用的shell程序。在这个......
  • 使用 npm 的配置参数 script-shell 来避免 window 执行脚本失败
    在Node.js的生态系统中,npm是一个非常重要的组件。npm,全称NodePackageManager,是Node.js的默认包管理器。它帮助开发者很容易地安装、更新、删除或管理Node.js项目中所需要的依赖包。npm能够在本地环境或者全局环境中安装Node.js模块,还提供了很多命令和特性,帮助开发者......
  • Vue 在内部对异步队列尝试使用原生的 Promise.then、MutationObserver 和 setImmedia
    下列关于Vue的描述错误的是()A当给某个组件修改某个值时,该组件不会立即重新渲染BVue内部使用原生Promise.then、MutationObserver和setImmediate实现异步队列,不会采用setTimeout(fn,0)C$nextTick()返回一个Promise对象D$nextTick()可以配合async/await使用正确答案:B官......
  • Python curlify 模块将请求对象转换为 cURL 命令
    一、curlify是一个Python模块,它可以将Python的requests库中的请求对象转换为cURL命令的形式。使用curlify可以方便地将Python代码中的请求转化为可执行的cURL命令,方便调试和测试。以下是curlify模块的简单使用步骤:安装curlify模块。可以使用pip命令进行......
  • c# 使用自写命令来一键控制无线和本地网络的开启关闭
    程序需要用管理员的身份运行,使用WMI(WindowsManagementInstrumentation)使用ManagementObjectSearcher对象获取适配器信息使用ManagementObject的InvokeMethod方法执行相应操作代码如下staticvoidMain(string[]args){Console.ForegroundColor=......
  • linux 命令3
    查看Linux发行版名称和版本号的8种方法viahttps://zhuanlan.zhihu.com/p/36253769via:https://www.2daygeek.com/check-find-linux-distribution-name-and-version/作者:MageshMaruthamuthu译者:HankChow校对:wxy方法总览lsb_release命令/etc/*-release文件uname......
  • ansible性能巡检+定时任务执行shell脚本
    一、ansible_使用ansible+shell脚本进行环境巡检1.编写脚本#用户目录下执行cd~#编辑vicheck.sh实现效果:脚本内容:巡检指标1:cpu使用率大于70,输出unhealth巡检指标2:内存使用率大于70,输出unhealth巡检指标3:/picclife磁盘使用率大于70,输出unhealth#!/bin/bash#cpu巡检sar......
  • Quartz.Net 在IIS下不执行或多次执行解决
    不执行解决方法在IIS中打开程序对应的应用程序池【高级设置】1.设置应用程序池【回收】->【固定时间间隔(分钟)】为0。2.设置应用程序池【进程模型】->【闲置超时时间(分钟)】为0。执行多次解决方法在IIS中打开程序对应的应用程序池【高级设置】1.设置应用程序池【进程模型】->【......
  • linux帮助命令
    内部命令helphelp命令的功能是用于显示帮助信息,能够输出Shell内部命令的帮助内容,但对于外部命令则无法使用,需要用man或info命令进行查看了。语法格式help[参数]命令名常用参数-d:显示命令的简短描述-m:使用man手册格式显示帮助信息-s:显示短格式的帮助信息参考示例help......
  • 和 ChatGPT 聊聊 .NET 编译和执行背后的那些事儿
    1.NET编译、构建、执行涉及到哪些概念在.NET编译、构建和执行中,涉及到以下概念:C#或VisualBasic.NET等编程语言:这些是.NETFramework使用的主要编程语言。开发人员使用这些语言编写应用程序和代码。Roslyn:Roslyn是.NET编译器平台,提供编译器和代码分析的API。......