Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Kaxperday en 20 Diciembre 2015, 11:18 am



Título: Extension spoofing C++, problema multibyte
Publicado por: Kaxperday en 20 Diciembre 2015, 11:18 am
Código
  1. wchar_t t = 0x202E;
  2. wstring w;
  3. w += 0x202E;
  4. wstring b = L"C:\\Users\\Usuario\\Desktop\\prueba" + w + L".exe";
  5. _wfopen(b.c_str() , L"wt");
  6.  

Inserto el carácter multibyte de "puntero de derecha a izquierda", para hacer el spoofing sin éxito, trabjo con wchar_t (16 bits), la cadena antes de llamar a wfopen() se muestra como:

"C:\Users\Usuario\Desktop\prueba"

¿qué pasa?, un saludo.


Título: Re: Extension spoofing C++, problema multibyte
Publicado por: Eternal Idol en 20 Diciembre 2015, 11:26 am
¿Ya miraste el archivo creado o no?


Título: Re: Extension spoofing C++, problema multibyte
Publicado por: Kaxperday en 20 Diciembre 2015, 12:23 pm
Esto ya es otra cosa:

Código
  1. wchar_t t = 0x202E;
  2. wstring w;
  3. w += 0x202E;
  4. wstring b = L"C:\\Users\\Usuario\\Desktop\\prueba" + w + L"fdp.exe";
  5. wcout << b; system("pause");
  6. _wfopen(b.c_str() , L"wt");
  7.  

Si que funciona, pero aún así ¿no sabrás alguna otra manera de hacerlo sin que aparezca el "exe" en el nombre? (supongo que no habrá que usar el carácter derecha a izquierda claro).

Saludos y gracias por la respuesta socio.

Edito: Mejor así:

Código
  1. bool extension_spoofing(wstring _direccion, wstring _extension){
  2. if (_direccion.find(L".exe") != wstring::npos){
  3. wstring temporal = _direccion;
  4. temporal = wstring(temporal.rbegin(), _extension.rend());
  5. temporal.erase(temporal.find(L".exe"), _extension.length());
  6. temporal += (wchar_t)0x202E + _extension + L".exe";
  7. return !_wrename(_direccion.c_str(), temporal.c_str());
  8. }
  9. return false;
  10. }
  11.  

Código
  1. bool extension_spoofing(wstring _direccion, wstring _extension){
  2. if (_direccion.find_last_of('.') != wstring::npos){
  3. wstring direccion = _direccion;
  4. wstring extension = direccion.substr(direccion.find_last_of('.') + 1, direccion.length());
  5. direccion.erase(direccion.find_last_of('.'), extension.length() + 1);
  6. direccion += (wchar_t)0x202E + wstring(_extension.rbegin(), _extension.rend()) + L"." + extension;
  7. return !_wrename(_direccion.c_str(), direccion.c_str());
  8. }
  9. return false;
  10. }
  11.  

Este último a veces falla y cambia de extensión a cualquier tipo de archivo, pero bueno no le voy a dar más vueltas, solo quería ver que se podía hacer y funciona muy bien, lo único que tiene "exe" en el nombre, pero es lo de menos. Un saludo!!.

Enjoy, ¡saludos!