Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Taky vám přetéká? (2)

Peter
Peter (neregistrovaný)
4. 7. 2002 8:13 Nový

Perfektni, dekuju.

celé vlákno

Sqely dvojclanek, ktery se radi do top 10 of root.cz. Dekuju <p>Peter

Polish
Polish (neregistrovaný)
4. 7. 2002 9:28 Nový

Kouzlo assembleru

celé vlákno

Uz jsem davno zapomnel na kouzlo assembleru. Je to proste nadhera. Kde jsou ty casy ?
Dekuji
PS. Naposledy jsem si hral s assemblerem na Alphe a musim rict : tak trochu jiny assembler.

Frantisek Pokorny
Frantisek Pokorny (neregistrovaný)
4. 7. 2002 9:29 Nový

super!

celé vlákno

bezva clanek. mam rad, kdyz o tematu pise nekdo, kdo do nej vidi. a jaky z clnaku plyne pouceni? ze psat exploity nemuze kdejaka lama ;)

tomas szepe
tomas szepe (neregistrovaný)
5. 7. 2002 20:16 Nový

Re: super!

celé vlákno

Spis naopak, ten princip neni zrovna "rocket science."
Kazdopadne pro osvetu paradni clanek, diky!

mity
mity (neregistrovaný)
4. 7. 2002 13:12 Nový

Jina casta bezpecnostni dira

celé vlákno

Casto se take v mnoha programech setkate s konstrukci tohoto typu:

...
char str[1024];
... /* naplneni stringu str z uzivatelskeho vstupu/souboru/argumentu z prikazove radky apod. */
printf(str);
...

To je nebezpecne z toho duvodu, ze uzivatel vysledneho programu muze naplnit string str zaludnou posloupnosti znaku obsahujici veci jako "%d" apod., ktere zpusobi, ze veci na zasobniku (interni lokalni promenne funkce printf(), navratova adresa) jsou dale povazovany za dalsi argumenty printf(). Funkce printf() tim padem pouzije jinou (nespravnou) adresu. Je to sloziteji zneuzitelne, ale lze to.

Bezpecne je psat volani printf() takto:

printf("%s", str);

Duvod bezpecnosti teto konstrukce je snad kazdemu c-ckari jasny. Samozrejme se to vse tyka i pribuznych funkci sprintf(), fprintf() atd.

Mozna to vse nerikam moc presne, ale blizsi/presnejsi informace najdete na Internetu, napr. na http://www.linuxsecurity.com/docs/LDP/Secure-Programs-HOWTO/control-formatting.html

gmmns
gmmns (neregistrovaný)
4. 7. 2002 13:32 Nový

Re: Jina casta bezpecnostni dira

celé vlákno

A proc nepouzivat rovnou puts(string)? Pripada mi to logictejsi nez printf("%s", string).

cervik
cervik (neregistrovaný)
4. 7. 2002 14:26 Nový

Re: Jina casta bezpecnostni dira

celé vlákno

nebo write ( 1, string, strlen ( string ) ) :))

Martin Koníček
Martin Koníček (neregistrovaný)
4. 7. 2002 20:48 Nový

Záludnosti a problém

celé vlákno

No, před rokem jsem ve škole ukazoval učiteli při zkoušce program v C++. Mělo se zadávat číslo a výsledek byla nějaká funkca. Najednou přišel spolužák, ukaž já to vyzkouším. Začal tam psát nějaký znaky, a já na něj, že tam má být číslo... Nějak to tam nastrkal a program se zacykloval (asi nějak šikovně přepsal návratovou adresu).

Moje otázka zní, jak se proti tomu jednoduše bránit. Například chci číslo, 5 znaků, jak to udělat (nejjednodušeji).

Jo, taková maličkost, proč je to C++ tak děsně blbý? Vyšší programovací jazyky (Delphi, Pascal atd.) tyhle problémy vůbec nemaj... Maximálně spadne program, ale v C++ je každá prkotina přetečení zásobníku :-(

Wejn
Wejn (neregistrovaný)
4. 7. 2002 21:32 Nový

Re: Záludnosti a problém

celé vlákno

Nejsem si tak uplne jisty, ze slo zrovna o preteceni bufferu. Pokud jste pouzil klasicky 'cin' a to do nejakeho int/long, tak se neni cemu divit. Cteni selze a vsechna nasledujici take (tim padem se program vetsinou tvari, ze se zacyklil). Podobne je na tom ovsem aji scanf v C, takze si nevyberete. Ano, daji se testovat navratove hodnoty ... ale to je opruz (a nez tuto vetu nekdo napadne - daleko lepsi nez periodicke checkovani a'la errno jsou samozrejme vyjimky). Zlate vlastni funkce a nebo jine (inteligentni) jazyky :)

Lister
Lister (neregistrovaný)
5. 7. 2002 1:35 Nový

Re: Záludnosti a problém

celé vlákno

a co treba pouzivat na vstupu isdigit()
char ch;
while((cin.get(ch)) && isdigit(ch))

gmmns
gmmns (neregistrovaný)
5. 7. 2002 8:22 Nový

Re: Záludnosti a problém

celé vlákno

Asi jsem divny, ale v mych programech mi jeste zasobnik nikdy nepretekl. V C++ je mozne take programovat "bezpecne", ale je potreba vedet, na co si davat pozor. Pro zacatecnicke hrani si na programatora a vyuku programovani bych doporucoval Python. V C a C++ by asi nemeli lidi programovat, dokud se jazyk trosku nenauci. ;-)

Cohen
Cohen (neregistrovaný)
7. 7. 2002 17:51 Nový

Re: Záludnosti a problém

celé vlákno

No, me prijde, ze je nesmysl se ucit programovat v pythonu a pak prechazet na C++, kdyz maji uplne jinou syntaxi ;-).
Snad by bylo logictejsi na vyuku pouzit napr. Perl.
K te bezpecnosti, C++ je hodne zaludne, napr. ve statickem/dynamickem volani metod, nebo pretezovani operatoru. Je potreba vedet jak je implementovane to, co pouzivam a to je nejvetsi potiz. Kdyz programator pise neco vetsiho, problemum se stejne nevyhne.
Protoze me osobne bezpecnost velmi trapi, presunul jsem se k jave.

gmmns
gmmns (neregistrovaný)
7. 7. 2002 19:58 Nový

Re: Záludnosti a problém

celé vlákno

1. Perl bych pro vyuku programovani nedoporucil, protoze mi jako jazyk pripadne dost spatne navrzeny.
2. Pokud se pracuje v tymu, mela by se urcit jasna pravidla ohledne psani kodu, jeho dokumentace apod.
3. Je jasne, ze C/C++ psani bezpecneho kodu moc nenapomaha, ale at se nam to libi nebo ne, ma porad jeste sve opodstatneni a navic se v mnoha dalsich pripadech pouziva "ze zvyku". Proto si myslim, ze by bylo dobre na tento dvojclanek navazat nejakym delsim serialem. Autore, slysite, nechcete neco sepsat?

Ninja
Ninja (neregistrovaný)
27. 7. 2005 17:49 Nový

Re: Záludnosti a problém

celé vlákno
Hmmmmmmm.
Blizzard
Blizzard (neregistrovaný)
7. 7. 2002 18:29 Nový

Reseni domaciho ukolu

celé vlákno

Zdravim vsechny okolo, clanek je opravdu inspirujici :-)

Natolik, ze mi to nedalo a prepsal jsem si ho. Ukazka sice nefunguje, jak uz autor predesilal, ale udelal jsem funkcni variaci, ktera ziska prava roota a navic rootovo konto odstreli :-) Zajemci o reseni se muzou ozvat ...

Jediny problem ovsem spociva v tom, ze v systemu velmi pravdepodobne nenarazite na rootvsky soubor s sbitem, co by to bylo za roota, kterej by si nechal takovouhle diru do systemu ... Nebo se pletu? Jestli nekdo o necem vi, at prispeje se svou troskou do diskuze.

Zajimalo by me, jak vyresit problem s navratovou adresou u demonu, neporadite nekdo?

hkmaly
hkmaly (neregistrovaný)
9. 7. 2002 14:25 Nový

Re: Reseni domaciho ukolu

celé vlákno

Spousta programu pochopitelne SetUID bit nastaveny potrebuje. Namatkou su, passwd ... pochopitelne tyto programy obvykle nejsou napsane tak lamersky. Horsi to byva s demony, kteri jsou slozitejsi nez SetUID programy.

Bill
Bill (neregistrovaný)
9. 7. 2002 12:39 Nový

jak uz jsem jednou...

celé vlákno

Jak uz jsem jednou rekl. Nejlepsi je visual basic!

hkmaly
hkmaly (neregistrovaný)
9. 7. 2002 14:45 Nový

Bez titulku

celé vlákno

Ten domaci ukol je hezky chytak :-).

Zasílat nově přidané příspěvky e-mailem