[ opcode @ 15.07.2006. 12:53 ] @
Znaci pokusavam ispisat samo string ispisime al nikako da uspijem..

Code:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    char ispisime[10]="blablabla";  //0x22ff50
    char user[50]="";
   
    cin>>user;
    printf(user);
    
    cout<<endl<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}




Ako u user stavim %x.%x.%x.%x.%x.%x ... ispisem pola stacka, al treba mi samo da string ispisime ispisem.. njegova adresa je 0x22ff50


pozz
[ opcode @ 16.07.2006. 13:33 ] @
Hvala sto se toliko trudite da pomognete
[ glupi @ 16.07.2006. 23:33 ] @
Ja bi ovo rjesio tako da iskoristim onaj format string bug i prepisem .got entry system() f-je, te pokrenem neki egghunt shellcode koji trazi "blabla" pa ispise to kad nadje, ili ako kao mi kao neznamo da je tamo "blabla..." onda uzmes ebp vrijednost i ispisujes od vrha stacka i ispisujes dok ne dodjes do buffera user koji znas kako izgleda i onda gledas 10 baytova iznad njega sta je zapisano... ili sam fulao poantu?
[ opcode @ 17.07.2006. 10:23 ] @
Zar ne postoji neki nacin... ovo sam stalno susretao po tutorijalima:

/*address = 0x08480110
address (encoded as 32 bit le string): "\x10\x01\x48\x08"
*/
printf ("\x10\x01\x48\x08_%08x.%08x.%08x.%08x.%08x|%s|");

Al ocito to nije to.. zar nije nekako moguce "ubacit" adresu sa koje ce %x ispisat sadrzaj?