Безопасность интернет-приложений осень 2013 лекция 9
TRANSCRIPT
2
время
энергопотребление
ошибки
3
- Ciphertext-only: у нас есть только зашифрованный текст/тексты- Known plaintext: есть шифротекст и соответствующий ему открытый текстё- Chosen plaintext: мы можем выбирать текст для шифровки- Related key: у нас есть несколько шифровок одного текста с разными
ключами
5
web LDAP
6
Login:searchlogin= "(&(uid="+user+")"
(userPassword={MD5}"+base64(pack("H*",md5(pass)))+"))";
GET /login?user=*)(uid=*))(|(uid=*&pass=any
searchlogin="(&(uid=*)(uid=*))
(|(uid=*)(userPassword={MD5}X03MO1qnZdYdgyfeuILPmQ==))"
7
& Boolean AND | Boolean OR ! Boolean NOT = Equals ~= Approx>= Greater than <= Lesser than * Any character () Grouping
Blocklist
8
<?xml version="1.0" encoding="ISO-8859-1"?><tag1>
<tag2>$var</tag2>
</tag1>
GET /?var=</tag2><tag3>value</tag3><tag2>
9
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY ><!ENTITY xxe SYSTEM "file:///path/to/file" >]><foo>&xxe;</foo>
XML External Entity
10
<html><!--#include virtual=”header.html” -->
</html>
SSI directives:
echo var="varname"include virtual="docname"exec cmd="command"
12
data1
src
data2da
strcpygetssprintf...
13
Stack-based
ret address
frame
var
buf
...
MemStack
void f(char* var){char buf[10];
}void main(int argc,char** argv){
f(argv[1]);}
argv
argv
argv
argv
...
MemStack
14
Heap-based
data
buf
...
Mem
void main(int argc,char** argv){char* buf;buf = (char*)malloc(256);strcpy(buf,argv[1]);
}
argv
argv
...
Mem
15
8bit: 255 +2 = 116bit: 65535+2=132bit: 4294967295+2=1
nresp = packet_get_int();if (nresp > 0) {response = xmalloc(nresp*sizeof(char*));for (i = 0; i < nresp; i++)response[i] = packet_get_string(NULL);
}
16
printfsprintfsnprintf...
printf("%s%s%s",v1,v2);
%s string%p pointer%i integer%x hexadecimal%n write to pointer