• XDCTF网络安全大赛——Web100


    打开网址 http://game1.xdctf.com:8083/f16c3b1ed800fc78e605/index.php

    网页中显示了一张图片,图片名为hackkey.png:

    还有一段文字:

    话说,攻防,到底是先有攻还是先有防,到底有没有绝对的安全与绝对的不安全,仁者见仁智者见智,这不,杀软开始欺负一些工具流,但牛牛都不怕,他们总是有办法,道高一尺魔高一丈,你知道他们怎么过杀软的吗?找到key,你就明白了……………

    查看网页源码,发现一段html注释:

    1. <!-- <center><img src="src/2328266727 .png"></img></center>!-->

    访问地址 http://game1.xdctf.com:8083/f16c3b1ed800fc78e605/src/2328266727 .png
    可以看到一张二维码图片:

    解密二维码后是一个网址:
    http://mp.weixin.qq.com/s?__biz=MjM5Njc3NjM4MA==&mid=200689499&idx=2&sn=76a5cb177facf0ca76dfcc2db7e135cf#rdRGB

    访问网址后可以看到一篇文章:《【牛技术】恶意软件采用密写 把代码隐藏在图片中》,文章里有这么一段文字:

    “潜伏”主要任务是一个下载器,用来下载后续的恶意代码,用来搭建一个进行点击欺诈的僵尸网络。“潜伏“的DLL资源区域带有一个BMP位图。而“潜伏”把恶意代码的URL放在了每个像素的颜色字节的最低位上。

    所以可以猜测,key很有可能就藏在hackkey.png的像素颜色值的最低位上。

    那么可以用python来获取图片的所有颜色值,并把所有颜色值的最低位提取出来:
    python操作图片需要用到PIL(Python Imaging Library)库,可以通过easy_install PIL命令安装。如果使用Mac系统系统的话,还可以用brew install pillow来安装。安装PIL后就可以import Image库了。

    1. # -*- coding:utf-8 -*-
    2. import Image
    3. image = Image.open("hack.jpg")
    4. width, height = image.size
    5. binary_string = ""
    6. for y in range(height):
    7. for x in range(width):
    8. #获取坐标(x, y)处的颜色值
    9. r, g, b = image.getpixel((x, y))
    10. color = (r << 16) + (g << 8) + b
    11. #获取颜色二进制值的最后一位
    12. last_bit = str(bin(color))[-1]
    13. binary_string += last_bit
    14. print binary_string
    15. '''
    16. 结果为:
    17. 010110000110010000100100011001010100001101000000001100100110111100110001001101000000000000000000000000000000000000000000000......
    18. '''

    可见,开头有几十个颜色位隐藏了一些信息,后面的都是0说明没数据。
    再将二进制数据转成字符串:

    1. import binascii
    2. #将2进制字符串转成16进制字符串
    3. hex_string = "%x"%(int(binary_string, 2))
    4. #截取偶数个字符,因为字符是奇数会报错
    5. hex_string = hex_string[ : len(hex_string) / 2 * 2]
    6. #输出16进制值对应的字符串
    7. print "key :", binascii.a2b_hex(hex_string)
    8. '''
    9. 结果为:
    10. key : Xd$eC@2o14
    11. '''

    如果觉得代码比较麻烦的话,也可以使用神器StegSolve来找出图片中隐藏的信息,下载地址为:
    http://www.caesum.com/handbook/Stegsolve.jar
    用终端执行java -jar Stegsolve.jar运行StegSolve,点击File载入图片,然后点击Analyse–Data Exreact,出现以下界面。在Bit Planes里勾上Blue的第0位,再点击Preview按钮,就可以看到蓝色最低位组合成的字符:

  • 相关阅读:
    汇总国内开源站点镜像网站-20210813更新
    谈谈技术人的技术家园
    庖丁解码
    好的软件(软件工程)
    LeetCode 914卡盘分组
    《黑客与画家》读书笔记
    30岁的我给现在26岁的自己的想说的一些话
    毕业一年半,发现自己还是一个CURD boy
    LeetCode 120 Triangle
    疫情相关项目复盘
  • 原文地址:https://www.cnblogs.com/cute/p/10332950.html
Copyright © 2020-2023  润新知