XDCTF网络安全大赛——Web100
打开网址 http://game1.xdctf.com:8083/f16c3b1ed800fc78e605/index.php
网页中显示了一张图片,图片名为hackkey.png:
还有一段文字:
话说,攻防,到底是先有攻还是先有防,到底有没有绝对的安全与绝对的不安全,仁者见仁智者见智,这不,杀软开始欺负一些工具流,但牛牛都不怕,他们总是有办法,道高一尺魔高一丈,你知道他们怎么过杀软的吗?找到key,你就明白了……………
查看网页源码,发现一段html注释:
<!-- <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库了。
# -*- coding:utf-8 -*-
import Image
image = Image.open("hack.jpg")
width, height = image.size
binary_string = ""
for y in range(height):
for x in range(width):
#获取坐标(x, y)处的颜色值
r, g, b = image.getpixel((x, y))
color = (r << 16) + (g << 8) + b
#获取颜色二进制值的最后一位
last_bit = str(bin(color))[-1]
binary_string += last_bit
print binary_string
'''
结果为:
010110000110010000100100011001010100001101000000001100100110111100110001001101000000000000000000000000000000000000000000000......
'''
可见,开头有几十个颜色位隐藏了一些信息,后面的都是0说明没数据。
再将二进制数据转成字符串:
import binascii
#将2进制字符串转成16进制字符串
hex_string = "%x"%(int(binary_string, 2))
#截取偶数个字符,因为字符是奇数会报错
hex_string = hex_string[ : len(hex_string) / 2 * 2]
#输出16进制值对应的字符串
print "key :", binascii.a2b_hex(hex_string)
'''
结果为:
key : Xd$eC@2o14
'''
如果觉得代码比较麻烦的话,也可以使用神器StegSolve来找出图片中隐藏的信息,下载地址为:
http://www.caesum.com/handbook/Stegsolve.jar
用终端执行java -jar Stegsolve.jar
运行StegSolve,点击File载入图片,然后点击Analyse–Data Exreact,出现以下界面。在Bit Planes里勾上Blue的第0位,再点击Preview按钮,就可以看到蓝色最低位组合成的字符:
XDCTF网络安全大赛——Web100的更多相关文章
- 2019年上海市大学生网络安全大赛两道misc WriteUp
2019年全国大学生网络安全邀请赛暨第五届上海市大学生网络安全大赛 做出了两道Misc== 签到 题干 解题过程 题干提示一直注册成功,如果注册失败也许会出现flag. 下载下来是包含010edito ...
- Writeup:第五届上海市大学生网络安全大赛-Web
目录 Writeup:第五届上海市大学生网络安全大赛-Web 一.Decade 无参数函数RCE(./..) 二.Easysql 三.Babyt5 二次编码绕过strpos Description: ...
- 2020年第二届“网鼎杯”网络安全大赛 白虎组 部分题目Writeup
2020年第二届“网鼎杯”网络安全大赛 白虎组 部分题目Writeup 2020年网鼎杯白虎组赛题.zip下载 https://download.csdn.net/download/jameswhit ...
- 第三届上海市大学生网络安全大赛wp&学习
wp 0x00 p200 先分析了程序关键的数据结构 分析程序逻辑,在free堆块的时候没有清空指针,造成悬挂指针,并且程序中给了system('/bin/sh'),可以利用uaf 脚本如下: 1.先 ...
- 2019 上海市大学生网络安全大赛 RE部分WP
这次比赛就做了这一道逆向题,看到队友的WP,下面的对v10的加密方式为RC4,从我提取的v4数组就能够察觉出这是CR4了,自己傻乎乎的用OD调试,跟踪数据半天才做出来,还是见得的少了... ...下面 ...
- 第三届上海市大学生网络安全大赛 流量分析 WriteUp
题目链接: https://pan.baidu.com/s/1Utfq8W-NS4AfI0xG-HqSbA 提取码: 9wqs 解题思路: 打开流量包后,按照协议进行分类,发现了存在以下几种协议类型: ...
- 宁波市第三届网络安全大赛-WriteUp(Misc)
友情链接 Web师傅:skyxmao师傅 内心OS 第一次参加这种大型比赛,实力较菜,请师傅们多多指点 Misc | 完成 | 第一 下载文件,看一下doc没有任何问题, 没有发现任何隐写,然后修改文 ...
- 2022宁波市第五届网络安全大赛MISC方向部分wp
BlackAndWhite 1. 得到了三百多张黑白颜色的图片,将白色图片转为数字0,黑色图片转为数字1,得到二进制字符串 01100110011011000110000101100111011110 ...
- ITest
渗透测试入门 我很简单,请不要欺负我 网站综合渗透实验: 真的很简单: 你是会员吗: 2015中国网络安全大赛 一.代码执行: 同DZ漏洞全家桶中的"又见DZ,我能那你怎么办". ...
随机推荐
- node.js中的框架
node.js中的框架 载自: http://nodeframework.com/ MVC frameworks Sinatra-like These frameworks offer rich co ...
- IIS7 配置 PHP5.6
环境: 操作系统:Win7 & 10 (x64) 中文专业版 PHP :V5.6 首先添加IIS. 控制面板-〉程序-〉打开或关闭Windows功能 1. 勾选"Inte ...
- Python序列化之Json基础
python的序列化就是将python的基本对象转换为字符串的过程,反之则是反序列化. 序列化类型: -> import json import pickle 序列化定义: 序列化:对象.列表. ...
- c++11 输出时间
C++11中输出当前时间最直接的方法: std::time_t t2 = std::time(nullptr); cout << std::put_time(std::localtime( ...
- 【GMT43智能液晶模块】例程九:RTC实验——时钟显示
实验原理: STM32的实时时钟(RTC)是一个独立的定时器,有一组连续计数的 计数器,通过软件来对其进行相关的配置,可以提供时钟功能,通过修改计 数器的的值,可以调整时钟.最终通过emWin在显示屏 ...
- STM32F103ZET6 之 ADC+TIM+DMA+USART 综合实验
1.实验目的 1)使用 TIM1 触发 ADC,ADC 采集的数据通过DMA 传至内存,然后通过串口打印出采集的数据: 2)学会 DMA 传输数据并将数据进行保存: 3)验证ADC 的采样率与实际设置 ...
- Java知多少(40)接口和抽象类的区别
类是对象的模板,抽象类和接口可以看做是具体的类的模板. 由于从某种角度讲,接口是一种特殊的抽象类,它们的渊源颇深,有很大的相似之处,所以在选择使用谁的问题上很容易迷糊.我们首先分析它们具有的相同点. ...
- Java JPA小记
什么是JPA JPA之于ORM(持久层框架,如MyBatis.Hibernate等)正如JDBC之于数据库驱动. JDBC是Java语言定义的一套标准,规范了客户端程序访问关系数据库(如MySQL.O ...
- C++ 智能指针五
/* 代码分析: 这是标准库的源码,我们看到在enable_shared_from_this内部保存了一个weak_ptr.shared_from_this函数就是通过这个weak_ptr得到了. 但 ...
- Fedora Server 21下OpenJdk和Oracle Jdk共存
最新文章:Virson's Blog 参考文章:博客园-三维蚂蚁 Linux公社 1.首先需要下载对应平台的Jdk:Oracle 官网 2.使用yum或rpm命令安装Jdk: yum install ...