ctfshow—web题解
- web1
- web2
- web3
- web4
- web5
- web6
- web7
- web8
- web9
- web10
- web11
- web12
- web13
- web14
- web15
- web16
- web17
- web18
- web19
- web20
web1
题目提示
开发注释未及时删除
那就找开发注释咯,可以用F12
来查看,也可以Ctrl+U
直接查看源代码呢
就拿到flag了
web2
题目提示
js前台拦截 === 无效操作
沿用web1的思路,发现右键点不了了,F12也没反映了,这样可不行,我要拿到我最爱的flag!qwq
但是Ctrl+U还是可以正常用的
在 JavaScript 中,=== 是严格相等运算符,用于比较两个值的类型和数值。如果前台拦截中提示 “===
无效操作”,可能是因为在拦截的代码中,使用了不正确的语法或者操作方式导致了这个错误。
在进源码拿到flag的同时,发现
> window.oncontextmenu = function(){return false};
> window.onselectstart = function(){return false};
> window.onkeydown = function(){if (event.keyCode==123){event.keyCode=0;event.returnValue=false;}};
分析易得这段代码是用来禁止在网页上右键点击(禁用上下文菜单)、禁止选择文本和禁止按下 F12 键打开开发者工具的操作。具体功能解释如下:
window.oncontextmenu
:这行代码将右键点击事件的默认行为禁止,即禁用了浏览器的上下文菜单。
window.onselectstart
:这行代码阻止了文本被选中,使得用户无法通过鼠标选择页面上的文本内容。
window.onkeydown
:这行代码捕获键盘按下事件,当按下的键为 F12 时,将其事件码设置为 0 并且取消默认行为,从而阻止了按下F12 键打开浏览器的开发者工具。
web3
题目提示
没思路的时候抓个包看看,可能会有意外收获
他让我们抓包那就抓吧,打开抓包工具burpsuite,再熟练的打开代理
肯定有人说这也没啥啊,
确实没啥,那就点点看呗,点到hex里面的时候,发现藏在这里的flag,拿下
当然在前端的网络里面也可以看到这个flag
web4
题目提示
总有人把后台地址写入
robots
,帮黑阔大佬们引路。
那就得知道在网络上的robots
是什么
robots.txt是一种文本文件,用于向网络爬虫(如搜索引擎的爬虫)提供网站访问的指导。它位于网站的根目录下,通过规定哪些页面可以被爬虫访问,以及哪些页面应该被忽略,来控制搜索引擎对网站内容的抓取和索引。
通过编辑robots.txt文件,网站管理员可以告诉搜索引擎爬虫哪些页面应该被排除在外,以保护隐私或防止搜索引擎浪费资源爬取不必要的页面。同时,也可以使用robots.txt来指示搜索引擎爬虫对特定页面的抓取频率限制,以避免对服务器造成过大负担。
然而,需要注意的是,robots.txt只是一种约定和建议,而并非强制规定。善意的搜索引擎会尊重robots.txt文件的指示,但恶意的爬虫可能会无视这些规则。
就拿百度的看看https://www.baidu.com/robots.txt
这里面的内容是这样的,大多数就是一些目录,如下图
知道这个就好做了,直接在后面加上robots.txt
发现个关于flag的文件,继续拼接,成功拿下flag。
web5
题目提示
phps源码泄露有时候能帮上忙
疑惑?什么是phps
phps即为 PHP Source。PHP Source 由 The PHP Group 发布,是最通用的关联应用程序。
phps文件就是php的源代码文件,通常用于提供给用户(访问者)查看php代码,因为用户无法直接通过Web浏览器看到php文件的内容,所以需要用phps文件代替。其实,只要不用php等已经在服务器中注册过的MIME类型为文件即可,但为了国际通用,所以才用了phps文件类型
已知站点是php
搭建的
而且默认建站规则都有index.php
联想到可能是index.phps
那就实践试试,在原网页的请求上加上/index.phps,这道题之后会给下载这个文件
文件下载好后用正在使用的浏览器打开,打开后看到是空白网页
这时候查看这个网页源码即可从注释中得到flag
直接用burpsuite抓包也可以直接回显出来,成功拿下flag
web6
题目提示
解压源码到当前目录,测试正常,收工
条件反射www.zip
,别问为什么,问就是经验,常见的网站源码备份文件
常见的网站源码备份文件后缀
• tar
• tar.gz
• zip
• rar
常见的网站源码备份文件名
• web
• website
• backup
• backup
• www
• wwwroot
• temp
Web.tar
Web.
Web.
Web.
website.
website.
website.
website.
backup
backup
backup
backup
backup
backup
backup
backup
www
www
www
www
wwwroot
wwwroot
wwwroot
wwwroot
temp
temp
temp
temp
拿下flag
提示在fl000g.txt
下,那么在URL后加上这个txt,成功拿下flag!
web7
题目提示
版本控制很重要,但不要部署到生产环境更重要。
根据提示说的什么不要部署在生产环境什么的不太懂,反正就肯定是信息泄露嘛,继续保持开发者工具、抓包、dirsearch三连,dirsearch发现可以访问/.git/
尝试访问一下,成功得到flag
web8
题目提示同web7一样 这道题和上面一道题类似,都是版本控制器问题 常用的就是Git和SVN上面那题用的是/.git/
这一题只需要将
git
改为svn
即可
web9
题目提示
发现网页有个错别字?赶紧在生产环境vim改下,不好,死机了
根据提示,在Linux生产环境上使用vim或者vi做修改时,会生成一个swp为后缀的文件
第一次意外退出生成的是.swp
第二次意外退出生成的是.swo
第三次为.swn
因此可以尝试打开第一次退出时产生的这个文件,输入/index.php.swp
会下载出文件
打开即可得到flag
web10
题目提示
cookie 只是一块饼干,不能存放任何隐私数据
饼干?嘿嘿嘿好吃😋喜欢吃饼干,不对,cookie在这里好像不是饼干的意思,那是什么呢?
Cookie
是一种存储在用户计算机上的小型文本文件。它由网站通过用户的浏览器创建并存储在用户的硬盘上。当用户访问同一个网站时,浏览器会将该网站的Cookie发送回服务器,以便识别用户、跟踪其活动和提供个性化的服务。
Cookie通常用于以下目的:
会话管理
:通过保存用户的会话信息,使用户在同一网站上进行多个请求时保持登录状态。 用户偏好:记录用户的偏好设置,如语言选择、字体大小等。
购物车功能
:在电子商务网站上,Cookie可以帮助存储用户的购物车内的商品信息。
广告定向
:广告公司可以使用Cookie来跟踪用户的浏览行为,并根据其兴趣向其展示相关广告。
网站分析
:网站管理员可以使用Cookie来收集用户访问网站的统计数据,从而改进网站的性能和用户体验。
需要注意的是,Cookie只能存储少量的数据,并且是明文存储在用户设备上的,因此应谨慎处理敏感信息,同时用户可以通过浏览器设置来控制Cookie的接受与拒绝。
好好好,cookie是这样的是吧,那我们怎么得到cookie呢,很简单,抓包or直接在F12里的 network找
很明显的看到cookie里的flag就得到了,不过还得url编码下,%7B和&7B是左右花括号
成功拿下flag!或者按下面的网络里得到flag
web11
题目提示
域名其实也可以隐藏信息,比如
flag.ctfshow.com
就隐藏了一条信息 由于动态更新,txt记录会变 最终flag
flag{just_seesee}Unlock Hint for 0 points 通过dns检查查询flag https://zijian.aliyun.com/ TXT
记录,一般指为某个主机名或域名设置的说明。查找flag.ctfshow.com域名下的txt记录
刚拿到题目有点懵,还给了提示,仍然一头雾水,看了半天大概明白是了跟踪路由然后返回域名设置的,
那么跟踪路由命令nslookup,要查询域名的指定解析类型的解析记录
格式:nslookup -type=type domain [dns-server]
其中 type 为解释类型
那么接下来就好办了,直接命令一把梭
nslookup -qt=txt flag.ctfshow.com
但是本地不知道哪里出问题了运行不出来
只能依托gpt师傅帮帮忙了
good!!!成功拿下!!!
web12
题目提示
有时候网站上的公开信息,就是管理员常用密码
根据题目提示,我们访问robots.txt,获取到后台地址
在robots.txt
下发现/admin
/目录
然后我们访问一下后台
账号名直接盲猜admin,密码是网站底部的这串数字,372619038
登录后成功拿下flag。
web13
题目提示
技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码
既然跟默认密码有关,可能是密码泄露,在开发文档中极有可能泄露
在网站找到一个超链接
访问后,发现开发者在文档中写了自己的后台地址和账号密码
这里your-domain
换成自己的做题环境,访问后台地址
https://your-domain/system1103/login.php
拿下flag。
web14
题目提示
小0day:某编辑器最新版默认配置下,如果目录不存在,则会遍历服务器根目录
有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人
查看网页源代码、抓包、dirsearch,dirsearch发现存在可以访问的/editor/,和题目提示很像,进去看看
打开网站,根据提示访问http://your-domain/editor/
发现了个编辑器
点击图片空间或者文件空间时,发现居然能直接访问服务器根目录
一路从根目录到网站目录找,在var/www/html/editor/旁边发现了一个叫nothinghere
的文件夹,那肯定里面有东西了,发现fl000g.txt
直接抓包访问获得flag
/editor/attached/image/var/www/html/nothinghere/fl000g.txt
web15
题目提示
公开的信息比如邮箱,可能造成信息泄露,产生严重后果
根据题目提示邮箱,在网页底部发现一个邮箱
再url后面加上admin访问一下后台
有一个忘记密码选项,点击一下
有密保问题,联想到qq邮箱,搜索一下qq
得到地址为西安,于是提交西安得到重置后的密码
得到密码为admin7789,账号还是admin,登录后获得flag
web16
题目提示
对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露
php探针是用来探测空间、服务器运行状况和PHP信息用的,
探针可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息。是一个查看服务器信息的工具。
比如查看服务器支持什么,不支持什么,空间速度等等状况!
根据提示用到php探针知识点
输入默认探针tz.php
打开后点击phpinfo就可以查看到flag
再点击phpinfo查看信息,搜索ctfshow得到flag
web17
题目提示
备份的sql文件会泄露敏感信息
用dirsearch扫出url/backup.sql
打开靶机,直接用dirsearch扫描目录,扫出了/backup.sql
访问url/backup.sql,自动下载了backup.sql
打开backup.sql,即可获取flag
web18
题目提示
不要着急,休息,休息一会儿,玩101分给你flag
谢邀,玩了好几把,速度快的飞起,根本玩不了,作为一名ctfer怎么能玩游戏通关呢,必须得hack他
一般来说,这种游戏都是js里控制的,我们翻看js代码
解码147行的代码
\u4f60\u8d62\u4e86\uff0c\u53bb\u5e7a\u5e7a\u96f6\u70b9\u76ae\u7231\u5403\u76ae\u770b\u770b
根据提示,访问110.php,构造url/110.php
得到flag
web19
题目提示
密钥什么的,就不要放在前端了
打开一个登录框,既然提示前端,那就看看源代码有没有什么线索
发现了一些奇怪的东西,分析复习分析
一共两段js代码
function checkForm(){
var key = "0000000372619038";
var iv = "ilove36dverymuch";
var pazzword = $("#pazzword").val();
pazzword = encrypt(pazzword,key,iv);
$("#pazzword").val(pazzword);
$("#loginForm").submit();
}
function encrypt(data,key,iv) { //key,iv:16位的字符串
var key1 = CryptoJS.enc.Latin1.parse(key);
var iv1 = CryptoJS.enc.Latin1.parse(iv);
return CryptoJS.AES.encrypt(data, key1,{
iv : iv1,
mode : CryptoJS.mode.CBC,
padding : CryptoJS.pad.ZeroPadding
}).toString();
}
这段代码是一个用于在客户端对密码进行加密后再提交表单的函数。
它使用了 CryptoJS 库中的 AES 加密算法来对密码进行加密。具体来说,它做了以下几件事情:
获取输入框中 id 为 “pazzword” 的密码值。
通过指定的 key 和 iv 对密码进行 AES 加密。
将加密后的密码设置回输入框 “pazzword” 中。
提交表单。
需要注意的是,这段代码中使用的是
ECB
模式和ZeroPadding
填充方式。在实际应用中,建议考虑使用更安全的加密模式(如 CBC 模式)和填充方式(如 PKCS7 填充)来加强安全性。
<!--
error_reporting(0);
$flag="fakeflag"
$u = $_POST['username'];
$p = $_POST['pazzword'];
if(isset($u) && isset($p)){
if($u==='admin' && $p ==='a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04'){
echo $flag;
}
}
-->
这段代码是一个简单的 PHP 代码片段,用于处理用户提交的用户名和密码,并根据条件进行简单的验证,如果验证通过则返回一个标志。
具体来说,它做了以下几件事情:
关闭了错误报告输出,使得 PHP 不会输出错误信息到页面上。
定义了一个变量 $flag 并赋了一个值 “fakeflag”,这个变量可能在其他地方被使用。
从 POST 请求中获取了用户名和密码。
如果用户名和密码都被设置了,且用户名为 “admin”,且密码为特定的哈希值,则返回变量 $flag 的值。
结合以上几点来看:
密文输出编码: 十六进制hex
偏移量iv: ilove36dverymuch
密钥:0000000372619038
密文为: a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04
模式为CBC
填充为ZeroPadding
编码为Hex
利用在线解密工具直接得到密码为:i_want_a_36d_girl
输入admin
和i_want_a_36d_girl
登陆成功得到flag
利用hackbar或者burpsuite抓包发送post请求,post传参也可以得到username=admin&pazzword=a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04
web20
题目提示
mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱裤了。
早期 asp+access 架构的数据库文件为db.mdb ,所以访问 /db/db.mdb 下载一个文件。
打开得到flag:flag{ctfshow_old_database}