O %n coloca o comprimento da string de printf ou sprintf na variável e serve para você controlar o tamanho de um string que foi criado de forma dinâmica, por exemplo.

No exemplo, um atacante adiciona a string %n em uma variável de ambiente.

Caso seu programa utilize printf ou sprintf e a string da variável de ambiente maliciosa, alguma variável interna de seu programa pode ser modificada e alterar o resto do processamento.

Em 2013-01-11 11:00, Tiago Peczenyj escreveu:
A explicação eu li, o que eu não entendi é qual o uso do %n na vida real.

2013/1/11 <ulis...@ibiz.com.br>

a linha printf "$prompt: Password ok? %dn", $is_ok;
 
é que seta $is_ok = 4 (no exemplo do site) pq $prompt contem ‘%n’ dentro dele e %n, no printf, faz com q a prox $var, no caso, $id_ok receba 4 que o tamanho do string.
 
veja explicacao na propria pagina:
 
... the %n instructed Perl to fill the first format string argument with the number of characters printed, which caused Perl to set the $is_ok variable to 4.....
 
 
veja on-liner abaixo:
 
perl -e "my $prompt='1234567%n'; my $password='xxxx'; my $is_ok = ($password eq 'goodpass'); printf "$prompt: Password ok? %dn", $is_ok; print $is_ok;"
1234567: Password ok? 0
7
 
 

 
 
ULISSES GOMES
Tecnologia da Informação

IBIZ Tecnologia
+55 11 5579-3178 [6] r. 226
ulis...@ibiz.com.br
www.ibiz.com.br [7]

Esta mensagem de correio eletrônico e seus documentos anexos estão dirigidos EXCLUSIVAMENTE aos destinatários especificados. A informação contida pode ser CONFIDENCIAL e/ou estar LEGALMENTE PROTEGIDA e não necessariamente reflete a opinião da IBIZ. Se você receber esta mensagem por ENGANO, por favor, comunique imediatamente ao remetente e ELIMINE-A já que você NÃO ESTÁ AUTORIZADO ao uso, revelação, distribuição, impressão ou cópia de toda ou alguma parte da informação contida. Obrigado.

 

FROM: Solli Honorio
SENT: Friday, January 11, 2013 10:26 AM
TO: Perl Mongers Rio de Janeiro

SUBJECT: Re: [Rio-pm] Padrões de Código seguro
 

perldoc -f sprintf 
 

%n    special: *stores* the number of characters output so far into the next variable in the parameter list
 
Agora, o que isto significa, não tenho idéia :D !!!

Em 11 de janeiro de 2013 10:22, Tiago Peczenyj <tiago.pecze...@gmail.com> escreveu:

Divertido
 
alguem pode  me explicar o %n ?
 

https://www.securecoding.cert.org/confluence/display/perl/IDS30-PL.+Exclude+user+input+from+format+strings [4]

2013/1/11 <thiagogla...@ticursos.net>

Caros monges, a Cert (www.cert.org [1]) desenvolve padrões e recomendações de segurança para a área de TI. Achei bem interessante, pois eles têm recomendações para C, C++, Java e Perl.

www.securecoding.cert.org [2]

Os padrões para Perl e C++ ainda estão em desenvolvimento. Eles aceitam pitacos.

regards.
_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm [3]

 --
Tiago B. Peczenyj
Linux User #405772

http://about.me/peczenyj [5]
_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm [3]

 --
"o animal satisfeito dorme". - Guimarães Rosa

-------------------------

_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm [3]

_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm [3]

--
Tiago B. Peczenyj
Linux User #405772

http://about.me/peczenyj [5]

Links:
------
[1] http://www.cert.org
[2] http://www.securecoding.cert.org
[3] http://mail.pm.org/mailman/listinfo/rio-pm
[4]

https://www.securecoding.cert.org/confluence/display/perl/IDS30-PL.+Exclude+user+input+from+format+strings
[5] http://about.me/peczenyj
[6] tel:%2B55%2011%205579-3178
[7] http://www.ibiz.com.br

_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

_______________________________________________
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

Responder a