• 远程代码执行渗透测试—Server2128


    远程代码执行渗透测试

    任务环境说明:

    √ 服务器场景:Server2128(开放链接)

        √服务器场景操作系统:Windows

        √服务器用户名:Administrator密码:p@ssw0rd

    1.找出靶机桌面上文件夹1中的文件RCEBackdoor.zip,使用静态反编译工具IDA对该压缩包中的程序进行分析,根据提示来分析目标文件,将包含恶意代码基址偏移的范围作为Flag值提交(提交形式:0x1000XXXX-0x1000XXXX);

    Flag: 0x1000C028-0x1000C66C

    1000C028-1000C66C

    进入靶机打开1文件解压工具包

    phpStudy20180211版本 php5.4.45与php5.2.17 ext扩展文件夹下的php_xmlrpc.dll

    用工具打开

    然后将文件拖入ida pro 分析

    按shift+f12可以显示出文件内的字符串,在下面可以发现这两个奇怪的字符串

    这个是常用的php小马代码

    可以判断,这个字符串就是后门代码

    接下来我们交叉引用,跳转到执行这个代码的段,我们双击这个字符串

    双击这个地方,跳转到执行代码的地方

    看到这个不太懂按f5查看它的伪码

    根据题目,将包含恶意代码基址偏移的范围作为Flag值提交,

    我们通过从恶意代码执行的地方往上逆向分析,在这个while循环可以发现

    从最下面的恶意代码执行的伪代码

    我只分析了一下关键地方的代码,其他地方的代码不怎么重要,在分析里可以知道,关键的偏移地址是V11里的值和if对比的1000C66C内存地址里的值

    2.继续分析反汇编后代码,找出在恶意代码中的关键函数,将用于字符串拼接的函数名称作为Flag值提交;(提交形式:echo())

    Flag: spprintf

    这个就简单多了,我们继续在ida里分析

    3. 继续分析反汇编后代码,找出在恶意代码中的关键函数,将用于格式化字符串的参数名称作为Flag值提交;(提交形式:%*)

    恶意代码如下

    @eval(%s('%s'));

    1

    由此可知,用于格式化字符串的参数名称是

    %s

    4. 继续分析反汇编后代码,找出在恶意代码中的关键函数,将用于字符串传参的参数名称作为Flag值提交;(提交形式:%*)

    通过上面的恶意代码和学过c语言的都知道,字符串传参的参数名称是

    Flag:%s

    5. 找出靶机Windows7桌面上文件夹1中的decode.py文件并完善此文件,填写该文件当中空缺的F1、F2、F3、F4四个字符串,将四个字符串拼接后的内容作为Flag值提交

    我们打开decode.py文件

    完整的flag为:

    decompress.gzuncompress.str(decodedata_1).str(decodedata_2)

    关键的f1,f2,f3,f4代码:

    data = zlib.F1(data)

    flag = b'F2'

    hwrite.write(F3)

    hwrite.write(F4)

    #Flag=F1.F2.F3.F4

    F1是python的zlib模块里的函数

    F1:

    decompress

    F2是程序aGzuncompress变量里的值

    我们双击这个变量进入查看

    F2:

    gzuncompress

    通过这段代码分析

    flag = b'F2'

                  offset = data.find(flag)

                  data = data[offset + 0x10:offset + 0x10 + 0x567*4].replace(b"",b"")

                  decodedata_1 = zlib.F1(data[:0x191])

                  print(hexdump(data[0x191:]))

                  decodedata_2 = zlib.F1(data[0x191:])

                  with open("compres_data1.txt","w") as hwrite:

                         hwrite.write(F3)

                         hwrite.close

                  with open("compres_data2.txt","w") as hwrite:

                         hwrite.write(F4)

                         hwrite.close

    F3和F4分别为:

    str(decodedata_1)和str(decodedata_2)

    完整的flag为:

    decompress.gzuncompress.str(decodedata_1).str(decodedata_2)

    6. 执行decode.py后将生产两个文件,对第二个文件中内容进行分析并解码,将其中出现的端口列表中的所有端口号一招从小到大的顺序依次排列作为Flag值(如:21,22,23,80)提交;

    我们填补完程序缺失的代码后执行

    从生成的第二个文件里可以发现,base64加密,拿到kali去解码

    端口号从小到大的顺序为:

    53,80,8080,20123,40125

  • 相关阅读:
    离散化模板
    流媒体巨头Plex遭黑客攻击, 批量重置数百万密码
    CAXA 3D 实体设计2023 软件下载+补丁+安装教程
    B. Sorted Adjacent Differences
    Spark【RDD编程(二)RDD编程基础】
    C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)
    windows goland go exec "gcc": executable file not found in %PATH%
    PM和PMO到底有什么区别?如何提升组织效能?
    Godot 添加信号
    [前端网站源码]基于HTML5,DIV CSS实现的宠物狗个性化服务网站前端(静态网页设计)
  • 原文地址:https://blog.csdn.net/JJH2724719395/article/details/133528929