Web

upload

首先是一个登录见面,尝试弱口令以及sql注入命令都会显示"no hacker!!!"字样

image-20220814090449704

image-20220814090500359

image-20220814090555588

查看源码代码审计,存在upload界面,对应标题,想着应该这才是入口点

image-20220814090646826

进入界面

image-20220814090724381

先是试试看能不能正常上传

image-20220814090813168

jpg和png格式都可以,新建一个包含一句话马的php文件,无法上传

image-20220814091100302

抓包对文件后缀进行修改,.php不行就尝试了.php5,可以成功上传,但是存在php被删去的情况

image-20220814091312937

就试了试大小写的,也是被限制的

image-20220814091834307

试了双写php,发现顺序不对也不行,就调整一下

image-20220814091907790

成功了

image-20220814092023867

用蚁剑进行连接

image-20220814092159442

image-20220814092225156

找了半天没看到flag有点懵

image-20220814092301295

后来再找一下就看到了

image-20220814154414132

file

<?php
//step1.php
error_reporting(0);
$rule = $_GET["rule"];
$read = $_POST["read"];
if(isset($rule)&&(file_get_contents($rule,'r')==="This is only the first step")){
    echo file_get_contents($rule,'r');
    if(preg_match("/flag/",$read)){
        die("No way!");
    }

    include($read);  //step2.php
    
}
else{
    highlight_file(__FILE__);
}
?>

代码审计一下,要用get方法传入rule,用post方法传入read,并且rule要包含"This is only the first step"这个内容

因为include($read)和preg_match("/flag/",$read),可得用read进行文件包含,且不能出现flag

代码中又提示了step2.php文件,所以可以列出

?rule=data://text/plain,This is only the first step
read=php://filter/convert.base64-encode/resource=step2.php

出现一串base64编码

image-20220814093526698

解码得

ש<meta charset="utf8">
<?php
error_reporting(0);
$file = $_GET["flag"];
if(stristr($file,"php://filter") || stristr($file,"zip://") || stristr($file,"phar://") || stristr($file,"php://input")){
    exit('no hacker!');
}
if($file){

要用get方法传入flag

原来写的是:?flag=flag.php
后来被师傅无情教训:"谁跟你说名字一定是flag的",好叭,又是想当然
改成:flag=/flag

image-20220814185924714

insert

image-20220814143019626

image-20220814143446112

浅试一下咯

<script>alert('xss')</script>

image-20220814143627351

image-20220814143716760

增加了一行代码,那么说明输入javascript代码是可以被执行的

后面不会了,会了再回来补哈哈哈哈哈

Misc

ass

丢进十六进制工具里分析,像这种一大串的,线索给的会比较明显,要么开头要么结尾

观察一下前面有个PNG,结尾有个base64编码

image-20220814194814520

把结尾的那一句base64解码

image-20220814194750770

0.38

image-20220814094646076

不要就是要

把红绿蓝选齐,挑个LSB,点击 Save Bin

image-20220814100034780

原来的图片会变成一个二维码

image-20220814100030006

YBCTF{Taoshen-Said:No_Lsb~}

Osint

Osint1

image-20220814195652409

image-20220814195150878

球星德荣

image-20220814195612028

Osint2

image-20220814195746263

image-20220814110349835

发现酒店

image-20220814110532143

然后hint上说有学校

image-20220814110650438

因为日落西边,说明学校在东边

image-20220814111531416

Re

re1

把EZJAVA .jar包反编译一下

image-20220814222012279

把if判断里的东西到本地跑一遍,他把 cmp 和你输入的值进行了比较

最后得出cmp的值是YBCTF{162_M4NY_STL}