web
Safe_Proxy
主页直接给代码了
先改代码
1 |
|
需要把result返回,并且要把传入的code输出用来记录payload
然后把flask监听改成0.0.0.0
然后fenjing直接梭
fenjing webui
直接爆破即可,最终日志得到执行命令的payload,注意需要
可以得到ls的payload
将flag写入app.py,之后直接通过get的方式读取__file__
hello_web
随便输点,可以看到../hackme.php和tips.php
../经过尝试猜测被过滤,双写进行绕过
tips有phpinfo,然后可以看到一堆disable function
hackme有一段代码,大概是这样的
这张是当时调试的图片,忘记截屏了
base64可以解码
把里面eval改成echo,可以看到执行的内容,前提是把这段代码和前面刚刚那个截屏放在一起
然后传参数的时候要注意php非法参数名的事情
需要传cmd[66.99=xxx
之后因为有disbale function,使用github的项目绕过即可
https://github.com/l3m0n/Bypass_Disable_functions_Shell/blob/master/shell.php
用这个shell.php
之后稍微改一下
1 | POST /index.php?file=../....//hackme.php |
Pwn
note
放入ida,看一下程序逻辑
重命名一下,看见了amenu函数
不同的选项,对应不同的功能,后续分析要用
不同的分支,对应不同的功能,则可以定位到不同的功能分支。
观察new部分
分析可以知道,chunk的第一个元素被赋值为函数指针,因此根据c++一堆函数指针调用函数的特性,完全可以从此处入手,分析是否有机会可以覆盖函数指针,然后调用我们自己的函数,接下来的问题就是不知道有没有后门函数
:可以找到一个后门,下面就可以考虑覆盖函数指针,使其指向此函数即可。
接着可以分析edit:
存在溢出:
可以溢出到下一个chunk的函数指针。
之后会调用此函数指针指向的函数
思路现在就清晰了,可以申请两个chunk,通过上一个覆盖下一个chunk的函数指针,使其指向我们的后门函数即可。但是现在的问题是如何找到指向后门的指针,观察show函数的时候就会知道需要我们在heap中填入后门地址,那么heap的指针就成为了指向后门的指针。
由于我们还没有看show函数,思路到这里就卡住了,无法获得一个指向后门的函数指针。
有个gift会输出意想不到的东西。
会输出chunk的地址:
现在我们就知道堆地址了,
我们就可以利用了:代码如下:
1 | from pwn import* |
Reverse
dump
题目里有两个文件,一个是十六进制文件,一个是exe文件。打开十六进制文件,先保存数据
1 | 23291e24380e1520370e0520000e37121d0f24010139 |
使用IDA打开程序,发现main里就是逻辑。这里的argv[1]就是我们的输入
经过动态调试,下断点,调试后发现这里是对输入做变换,然后打印出来。
输入flag{1234567890}:输出如下图所示,f是23,之后的数字是后续。
观察上述数据和十六进制文件的关系,因为一直没看到有对文件进行操作,所以这里比较疑惑。然后比较的时候可以发现前面的数值是雷同的。
多试了几次,发现每个字符对应编码出来的值是一样的。互相之间是独立计算的。所以使用python的库:from string import printable。对里面的字符打印出来,做成一张表来对应。
其中有些字符是0,没有对应的值,打出来数字1和2是有对应值的,2以后都不行,都是0。同时提示说了长度和第13位。因为0有很多可能,根据提示能知道,这一位是4。根据表可得flag
最终打表可得:
1 | ''' |
Crypto
fffffhash
分析0x0000000001000000000000000000013b这一串数字,在网上查找
发现这是128位的FNV哈希的一个参数,在网上搜索FNV相关的知识,结果搜到了类似的题目(64位FNV)
然后将解题脚本稍微修改了一下,就跑出来了
py脚本:
1 | TARGET = 201431453607244229943761366749810895688 |
跑出来的结果:
所以得到了我们的hex_string
然后nc交互就可以了,如下所示:
flag{508074eb-ea1b-4608-9bdb-64e6d73e2655}
rasnd
两个部分的拼凑
第一部分是前段时间强网杯的apdq的第二部分,直接套板子就出来了
1 | #part1 |
解得d后正常解密即可
1 | from Crypto.Util.number import long_to_bytes |
然后第二部分,就是DUCTF2020的EasyRSA,修改一下数字就可以了
https://crypto-writeup-public.hatenablog.com/entry/DownUnderCTF%25202020%2520%257C%2520%2520%2520babyRSA
1 | #part2 |
然后解得d
1 | from gmpy2 import * |
最终:
1 | from Crypto.Util.number import * |
将两个部分合起来,就是最后的flag了
flag{7f33cdc8-da19-4daa-b621-da2f37dc0435}
威胁检测与网络流量分析
zeroshell_1
打开附件的数据包
搜http可以直接找到一个关键的路径
跟踪数据包看一下
直接执行了命令
然后refer里面就是flag
zeroshell_2
拿poc直接打,然后搜索全部文件中包含flag的
可以搜到,然后直接cat
zeroshell_3
我们队伍先做的4,再做的3
根据队友传出来的文件,使用IDA查看这个文件,查看字符串,往下翻发现可疑ip和密码
查看该字符串存放位置,在根据调用链查看,该函数位于start,看起来也比较符合网络连接的代码。进行尝试,发现是正确的ip地址
zeroshell_4
猜测隐藏文件以.开头,直接搜
看到一个nginx文件很可疑
看到一个elf文件
下载提取其中的elf文件,然后发给逆向手,逆向手去做的3和5
最终4的flag就是flag{.nginx}
zeroshell_5
根据zeroshell_5解答正确,根据队友传出来的文件,使用IDA查看这个文件,查看字符串,往下翻发现可疑ip和密码
查看该字符串存放位置,在根据调用链查看,该函数位于start,看起来也比较符合网络连接的代码。同时这个密钥也在ip下方,进行尝试,发现是正确的。
WinFT_1
打开主机,桌面有一个currports程序,我们打开,下面有一个正在运行的exe程序
双击这个程序
flag{miscsecure.com:192.168.116.130:443}
WinFT_2
打开PCHunter程序,进入电脑体检中
选择启动信息,生成检测报告,最后一行有一个奇怪的命令,里面有flag
导出报告,cyberchef直接梭
得到flag
sc05_1
告警IP为134.6.4.12(简称IP1),然后问我们IP1地址首次被请求时间是多久?
所以我们直接在firewall的excel中查找该ip地址
首先在http-export中搜索该ip
然后将2024/11/09_16:23:57 MD5加密,上交flag,发现错误
然后再去第二个表中查找,发现找不到
然后在tcp-export中进行查找
发现找到了两个ip地址,一个一个试
发现2024/11/09_16:22:42这个时间,MD5加密得到flag,就对了
得到flag{01DF5BC2388E287D4CC8F11EA4D31929}