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
• tempWeb.tar
Web.
Web.
Web.website.
website.
website.
website.backup
backup
backup
backupbackup
backup
backup
backupwww
www
www
wwwwwwroot
wwwroot
wwwroot
wwwroottemp
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}