ctf_show(web入门笔记)持续更新中

news2025/2/22 7:23:40

信息收集

1-2:查看源代码

3:bp抓包

4:robots.txt(这个文件里会写有网站管理者不想让爬虫的页面或其他)

5:网站源代码泄露index.phps

6:同样也是源码泄露,(拿到以后还得访问放flag的url)###可跑脚本找是哪个源代码泄露

7:.git泄露

git其中有一个目录.git,是个类似于备份目录,我们使用git的所有被追踪的操作和被操作的文件都会被记录

如果没有配置好导致.git被上线,导致可以访问.git获取源代码,那就可以白盒审计,如果获得敏感信息则直接可以获取服务器权限。

8:.svn泄露

svn是源代码管理工具,使用svn管理本地源代码时会生成一个.svn文件,如果管理员直接复制粘贴源代码没有导出,则会造成.svn泄露

9:.swp泄露

原理:在linux生产环境上使用vim或者vi或产生一个以.swp为后缀的文件,例如修改index.php文件就会生成一个index.php.swp文件(同样也属于源码泄露)####可用脚本跑

10:cookie

11:需要用nslookup命令-query=any (host)来查询域名的指定解析类型的解析记录

12:找到登录页面,网站存在敏感信息可直接获取管理员密码

13:网页最下有可下载文件里面有敏感信息以及后台网站地址

14:网站默认配置的问题,目录扫描加信息收集

15:找到登录页面看到能忘记密码重新修改但是需要管理员设置的地址,通过管理员遗留的各种信息找到比如qq邮箱,通过qq查询qq邮箱找到是哪里的

16:考察php探针,最后在phpinfo中找到flag

php探针是用php语言编写的一个程序,可以用来查看服务器的状态,比如服务器操作系统信息,服务器CPU、内存和硬盘的使用状况,php版本和组件信息,数据库版本信息,实时网速等。可以非常方便地了解服务器的运行状态

三款常用的探针:

雅黑php探针:url/tz.php

x prober:url/x.php

upupw php:url/u.php

可将这些写入目录扫描使用的字典里,可以跟方便的扫东西

17:dirsearch扫目录能扫到备份文件

18:考察简单js,可用开发者模式控制台直接执行js语句或者引导他的条件让他通过判断给出flag

19:查看源代码有PHP语句,可直接获取账户密码

20:还是备份文件下载,下载后用二进制软件解码即可

爆破

21:直接bp抓包跑字典,需base64加密

22:可用工具跑也可用浏览器找还可以用网上做好的域名查找去找

23:此题需跑脚本已经附上自写脚本

最后跑出来六个答案一个一个尝试得到答案为3j

import hashlib

m = "0123456789qwertyuiopasdfghjklzxcvbnm"
# 这串英文就是24个英文字母
for i in m:
    for a in m:
        md5 = hashlib.md5()
        # 构造一个hashlib对象
        str_1 = str(i) + str(a)
        # 构造payload
        md5.update(str_1.encode('utf-8'))
        # 指定位utf-8加密方式
        b = md5.hexdigest()
        # MD5加密
        if b[1:2] == b[14:15] and b[14:15] == b[17:18]:
            print(str_1)
            # 输出答案

24:所以直接把它设置的复制一下拿到php在线运行网站跑一下就能得到

这一题很像是版本漏洞,通过看提示从php4.2.0开始就不用mt_scrand(seed)来播种,会自动播种,如果设置了mt_scrand(seed)并且seed有值,那就会生成伪随机数(俗称假的随机数),生成的数字就会固定。

25:这一题和上一题不一样,需要用工具跑(工具:php_mt_seed)

这里有和24题一样的漏洞,使用了mt_srand()播种就会生成特定的随机值,这里我们需要传入同样的随机值让rand的变量为零才能进入if

虽然说使用mt_rand()会生成特定的数,但是每次的使用会不一样

例如:第一次使用mt_rand()会生成123456但第二次使用mt_rand()会生成456789,但是无论刷新多少次他们都不会变

这里还需要我们传入cookie里的token值需要弱等于两个随机值相加(每一次使用,mt_rand()生成的都会不一样,本来我还想直接bp抓包爆破来着,但是显然不可行)

####这里使用工具怎么跑出来的不清楚原理,有些许复杂

这里跑出来的是mt_srand('种子')的种子,把他拿到php在线执行中去跑,直到第一次使用mt_rand()等于784681645(每个人都不一样)

例如这样:

26:直接暴力破解密码即可

27:这一题我直接用万能的bp做的

首先呢,他会验证这中间部分是否日期,如果长度或者大小都不正确的话,会直接弹窗且不发包,这里我直接用bp爆破模式添加了三个放payload的位置

这里是三个payload

28:直接bp抓包爆破,看状态码,返回200的就是存在目录,就会直接给flag

命令执行

29:有很多种方法可以使用内联法例如system('cat `ls`')或者像它提示的一样echo `nl fl""ag.php`

nl和cat的区别就是nl会列出文件内容并且带有行号

30:这里与29题原理相同只不过多禁用了一个system和php####请通过29题举一反三

31:这一题有多种解法看自身理解,答案不唯一

get嵌套

利用了eval()函数再写了一个$_GET['s']来接受变量,这样可以完全绕过所有验证

最后payload:c=eval($_GET['s']);&s=system('cat flag.php')

passthru()虽然system被禁用了但是还有很多可以调用系统命令的函数

例如:exec,shell_exec(),popen()之类的,可自行尝试

pyload:

c=passthru("c\at\$IFS\$1fla*");

最后还可以使用无参数rce,就像给的提示一样

32:这一题还是一样多种解法这里演示两种

第一种通过include包含文件

payload:

c=include$_GET["a"]?>&a=data://text/plain,<?php%20eval(system("cat%20flag.php"));?>

这个符号?>是应为防护里过滤了;符号,所以我们直接将后面的代码全部不要了直接闭合

例如:

<?php include$_GET["a"]?>preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c));?>

a后面使用的是伪协议也可以使用php://filter/read=convert.base64-encode/resource=flag.php

其他的伪协议也可以使用

第二种利用系统的日志文件写入代码然后访问利用(!!!这里的前提是可以访问到日志)

payload:

c=include$_GET["a"]?>&a=../../../../var/log/nginx/access.log

先随便刷新然后写入代码让日志文件记住

然后再刷新再写入我们包含日志文件的代码

bp抓包在user—agent写入代码

原理:日志文件会自动收集user—agent的信息,然后通过文件包含include命令来引用日志文件。

33-36:同样还是使用文件包含就能过,($_GET[参数],这里的参数可以是数字或者字母带小飘或者不带小飘,例如:'a'和a)

37-39:这一题用伪协议随便过(简单的文件包含)

例如:data://text/plain;base64,base64加密后的命令

如果传入参数后会有自动添加点东西可用//注释掉###如果有影响才会去注释它

例如:?c=data://text/palin,<?php%20eval(system(%27cat%20`ls`%27));?>//

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

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

相关文章

redis 从0到1完整学习 (十四):RedisObject 之 ZSet 类型

文章目录 1. 引言2. redis 源码下载3. redisObject 管理 ZSet 类型的数据结构4. 参考 1. 引言 前情提要&#xff1a; 《redis 从0到1完整学习 &#xff08;一&#xff09;&#xff1a;安装&初识 redis》 《redis 从0到1完整学习 &#xff08;二&#xff09;&#xff1a;re…

windows和linux操作Git(序章2)

Git 分布式版本控制系统(序章1) ## Linux 下安装 Git&#x1f53a; ​ ## Git命令大全&#x1f53a; windows和linux通用 安装完 Git 后&#xff0c;需要进行配置&#xff0c;如姓名、Email 等 git config --global user.name "你的名字"git config --global us…

CSS 纵向底部往上动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ scale-up-ver-bottom: isAnimating }"><!-- 元素内容 --&g…

Nginx 反向代理负载均衡

Nginx 反向代理负载均衡 普通的负载均衡软件&#xff0c;如 LVS&#xff0c;其实现的功能只是对请求数据包的转发、传递&#xff0c;从负载均衡下的节点服务器来看&#xff0c;接收到的请求还是来自访问负载均衡器的客户端的真实用户&#xff1b;而反向代理就不一样了&#xf…

[Echarts使用]:bug记录

问题1&#xff1a; z / z2 / zlevel of displayable is invalid, which may cause unexpected errors // 在series 选项中设置zlevel、z 属性即可解决 let option: echarts.EChartsCoreOption {...,series: {name: data.name,type: "line",smooth: true,showSymbol:…

计算机毕业设计——springboot养老院管理系统 养老院后台管理

1&#xff0c;绪论 1.1 背景调研 养老院是集医疗、护理、康复、膳食、社工等服务服务于一体的综合行养老院&#xff0c;经过我们前期的调查&#xff0c;院方大部分工作采用手工操作方式,会带来工作效率过低&#xff0c;运营成本过大的问题。 院方可用合理的较少投入取得更好…

【zookeeper选举源码分析】

文章目录 为什么要看源码&#xff1a; 1、提升技术功底&#xff1a;学习源码里的优秀设计思想&#xff0c;比如一些疑难问题的解决思路&#xff0c;还有一些优秀的设计模式&#xff0c;整体提升自己的技术功底 2、深度掌握技术框架&#xff1a;源码看多了&#xff0c;对于一个新…

2024-01-01 力扣高频SQL50题目 练习笔记

1. 1661求机器平均运行时间 在做这道题的时候&#xff0c;我遇到了4个问题 # 求平均的问题 如何找到个数? -> 相减对应列值后,直接average 就行。因为avg就是自动确定要除的个数&#xff08;当然要联合正确的group by 分组&#xff09; # 怎么根据machine_id和process_id…

解决npm,pnpm,yarn等安装electron超时等问题

我在安装electron的时候&#xff0c;出现了超时等等各种问题&#xff1a; &#xff08;RequestError: connect ETIMEDOUT 20.205.243.166:443&#xff09; npm yarn&#xff1a;Request Error: connect ETIMEDOUT 20.205.243.166:443 RequestError: socket hang up npm ER…

ThreadLocal共享变量

一、ThreadLocal 我们知道多线程访问同一个共享变量时&#xff0c;会出现线程安全问题&#xff0c;为了保证线程安全开发者需要对共享变量的访问操作进行适当的同步操作&#xff0c;如加锁等同步操作。 除此之外&#xff0c;Java提供了ThreadLocal类&#xff0c;当一个共享变…

python实现Ethernet/IP协议的客户端(三)

Ethernet/IP是一种工业自动化领域中常用的网络通信协议&#xff0c;它是基于标准以太网技术的应用层协议。作为工业领域的通信协议之一&#xff0c;Ethernet/IP 提供了一种在工业自动化设备之间实现通信和数据交换的标准化方法。python要实现Ethernet/IP的客户端&#xff0c;可…

Spring Cloud Gateway + Nacos 灰度发布

前言 本文将会使用 SpringCloud Gateway 网关组件配合 Nacos 实现灰度发布&#xff08;金丝雀发布&#xff09; 环境搭建 创建子模块服务提供者 provider&#xff0c;网关模块 gateway 父项目 pom.xml 配置 <?xml version"1.0" encoding"UTF-8"?…

数据结构OJ实验9-图存储结构和遍历

A. 图综合练习--构建邻接表 题目描述 已知一有向图&#xff0c;构建该图对应的邻接表。 邻接表包含数组和单链表两种数据结构&#xff0c;其中每个数组元素也是单链表的头结点&#xff0c;数组元素包含两个属性&#xff0c;属性一是顶点编号info&#xff0c;属性二是指针域n…

数据结构期末复习(fengkao课堂)

学习数据结构时&#xff0c;以下建议可能对您有所帮助&#xff1a; 理解基本概念&#xff1a;首先&#xff0c;确保您理解数据结构的基本概念&#xff0c;例如数组、链表、栈、队列、树、图等。了解它们的定义、特点和基本操作。 学习时间复杂度和空间复杂度&#xff1a;了解如…

【LeetCode:34. 在排序数组中查找元素的第一个和最后一个位置 | 二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

simulink代码生成(八)——应用串口输入的16进制数

1、串口输入的是16进制数&#xff0c;如何将其应用到算法中&#xff1f; 串口输入的数据是16进制数&#xff1b;要解决这个问题必须要理解matlab的数据类型&#xff1b;数据类型一般用来标明数据的系列参数&#xff0c;包含有精度、动态范围、性能和存储的资源。模型会默认使…

你好2024!

大家好&#xff0c;我是小悟 2024年1月1日&#xff0c;新年的第一天&#xff0c;阳光明媚&#xff0c;空气中弥漫着希望和新的开始的气息。在这个特别的日子里&#xff0c;大家纷纷走出家门&#xff0c;迎接新年的到来。 街道上&#xff0c;熙熙攘攘的人群中&#xff0c;有孩…

开放原子训练营(第四季)TobudOS——TobudOS内核移植(keil版)

前言 12月份参加了开放原第四季线下活动&#xff0c;觉得很有意义。通过这篇博文&#xff0c;记录一下这次活动进行的移植TobudOS内核的过程&#xff0c;下面就让我们开始吧。 开发板介绍 本次使用的开发板型号为STM32H750&#xff0c;当然了&#xff0c;其他型号的开发版也…

Django 实现Web便签

效果图 会用到的知识 目录结构与URL路由注册request与response对象模板基础与模板继承ORM查询后台管理 实现步骤 1. terminal 输入 django-admin startapp the_10回车 2. 注册&#xff0c; 在 tutorial子文件夹settings.py INSTALLED_APPS 中括号添加 "the_10" IN…

C++日期类的实现

前言&#xff1a;在类和对象比较熟悉的情况下&#xff0c;我们我们就可以开始制作日期表了&#xff0c;实现日期类所包含的知识点有构造函数&#xff0c;析构函数&#xff0c;函数重载&#xff0c;拷贝构造函数&#xff0c;运算符重载&#xff0c;const成员函数 1.日期类的加减…