Web
upload
首先是一个登录见面,尝试弱口令以及sql注入命令都会显示"no hacker!!!"字样
查看源码代码审计,存在upload界面,对应标题,想着应该这才是入口点
进入界面
先是试试看能不能正常上传
jpg和png格式都可以,新建一个包含一句话马的php文件,无法上传
抓包对文件后缀进行修改,.php不行就尝试了.php5,可以成功上传,但是存在php被删去的情况
就试了试大小写的,也是被限制的
试了双写php,发现顺序不对也不行,就调整一下
成功了
用蚁剑进行连接
找了半天没看到flag有点懵
后来再找一下就看到了
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编码
解码得
ש<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
insert
浅试一下咯
<script>alert('xss')</script>
增加了一行代码,那么说明输入javascript代码是可以被执行的
后面不会了,会了再回来补哈哈哈哈哈
Misc
ass
丢进十六进制工具里分析,像这种一大串的,线索给的会比较明显,要么开头要么结尾
观察一下前面有个PNG,结尾有个base64编码
把结尾的那一句base64解码
0.38
不要就是要
把红绿蓝选齐,挑个LSB,点击 Save Bin
原来的图片会变成一个二维码
YBCTF{Taoshen-Said:No_Lsb~}
Osint
Osint1
球星德荣
Osint2
发现酒店
然后hint上说有学校
因为日落西边,说明学校在东边
Re
re1
把EZJAVA .jar包反编译一下
把if判断里的东西到本地跑一遍,他把 cmp 和你输入的值进行了比较
最后得出cmp的值是YBCTF{162_M4NY_STL}
评论已关闭