Tersine Kod Mühendisliği

Başlatan Reverser, 03 Kasım 2014 - 20:34:00

« önceki - sonraki »

0 Üyeler ve 7 Ziyaretçi konuyu incelemekte.

betseg

zip'i açınca böyle göründüğü için "noluyo" dedim bi an :D ama sonra direkt zip'in çalıştırıldığını görünce çok şaşırdım :D

Reverser

#326
bir önceki mesajıma [1] https://forum.ubuntu-tr.net/index.php?topic=45477.msg552701#msg552701 istinaden ve konumuzun yapısı bakımından bu soruna yönelik çözüm önerisi sunuyorum:


1-) Dosyanın uzantısı değil de, file header'ı içinde bulunan magic number kontrol edilmeli. Bu şekilde dosya uzantısı hakkında daha sağlıklı sonuç alınır.
yazdığım program ELF header'ı içinde bulunan Magic number'ı kontrol eder. Site sahibi kişi ve ya kişiler bu kodu kolaylıkla PHP'ye port edebilirler.


/*
   ELF Magic Checker
   Reverser 
   1.8.2015
   
*/

#include <stdio.h>
#include <stdlib.h>

typedef struct {
char signature[16];
} HEADER;

//ELF magic number
char correct_sig[16] = {
   0x7F,  // .
   0x45,  // E
   0x4c,  // L   
   0x46,  // F
   0x02,
   0x01,
   0x01,
   0x00,
   0x00,
   0x00,
   0x00,
   0x00,
   0x00,
   0x00,
   0x00,
   0x00   
};

//ELF Header
struct {
   char signature[16];
   
} header = {
    {
     0x7F, 0x45, 0x4C, 0x46, 0x02, 0x01, 0x01,
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
     0x00, 0x00
}
};


int main(int argc, char *argv)
{
FILE *infile;
int loop0;
int total_size;
HEADER header;
infile = fopen("crackme.zip", "r");
if (infile == NULL)
{
printf("Dosya acilmadi.\n");
return -1;
}
fseek(infile, 0, SEEK_END);
total_size = ftell(infile);
fseek(infile, 0, SEEK_SET);

if(total_size < 0)
{
printf("Dosya boyutu alinamadi.\n");
return -1;
}

if (fread(&header, sizeof(HEADER), 1, infile) < 0)
{
printf("Dosya basligi okunamadi. \n");
return -1;
}
for (loop0 = 0; loop0 < sizeof(correct_sig); loop0++)
{
if (header.signature[loop0] != correct_sig[loop0])
{
printf("Dosya .ELF degil.\n");
return -1;
}
else
{
printf("Dosya .ELF \n");
return 0;
}
}
}


XFCE ROCKS !
Powered by Thunar & XFWM4



oasln

#327
Tam dediginizi yapan zaten libmagic(3) ve komut tabanlı arabirimi file(1) var zaten. PHP içerisinde de builtin olarak mevcut.

$ file crackme.zip
crackme.zip: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, stripped
--

Reverser

olduğunu biliyorum ;)
readelf'de okuyor sıkıntı yok o konuda.
Ben kendi yazdığım kod ile çözüm önerisinde bulunup, açıklama yaptım. Kodu dikkatle incelersen görürüsün ne yapmak istediğimi.

XFCE ROCKS !
Powered by Thunar & XFWM4



oasln

Kod dosyanın zip olup olmadığından ziyade, ELF olup olmadığına bakıyor. Bir dosyanın zip olup olmadığını, ELF olup olmamasına bakarak mı anlarsınız :) Sizin kodu kullansalar bu sefer de ELF harici tüm zip uzantılı dosyaları kabul ederler.
--

Reverser

Amacın nedir anlamadım? Sadece elf uzantısı üzerinden konuşuyorum. Çok şükür algoritma kurma ve anlama becerim var.

XFCE ROCKS !
Powered by Thunar & XFWM4



oasln

Bir amacım yok. Sadece önerdiğiniz çözümün aslında problemi çözmediğini belirtmek istedim.
--

Reverser

Benim de belirtmek istediğim şu;
Bu açıklama sadece güvenlik açığı oluşturduğunu düşündüğüm bu durum için geçerli.

XFCE ROCKS !
Powered by Thunar & XFWM4



oasln

Tamam kusura bakmayın eğer yanlış anlaşıldıysam. Eğer 817c0d3r dışında birinden örnek kabul ediyorsanız ben de bir crackme.zip hazırlamak isterim.
--

Reverser

kusurluk bir durum yok. Ben durumu iyi ifade edemedim muhtemelen, o nedenle iletişimde kopukluk oldu. Elbette sen de herkes gibi dosya paylaşabilirsin fakat paylaşacağın dosyayı kendi adıma bugün inceleyemeyeceğim.

XFCE ROCKS !
Powered by Thunar & XFWM4



7hr33l3t73r

#335
Ben bir tane daha ekleyim.
@Reverser, siz cozerseniz ozelden cevabi yazarsiniz. Biraz diger arkadaslara firsat verelim.
1 hafta kadar bekleyelim.Cozen olmazsa cevabi yazarsiniz.
s6.dosya.tc/server/714pyc/killme.zip.html
@Reverser, bu arada sitenin bu kadar kolay bir acik birakacagini sanmiyorum ama kesin konusmamak lazim. :)
Musait bir zaman da bakmak lazim.
Ilgilenen arkadaslara simdiden kolay gelsin.
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

betseg

strings ile sifre.txt gördüm ama başka bir şey yok :D 600 kb naptın :D

7hr33l3t73r

@betseg, Biraz sayi, biraz harf aldim.
Sonra evirdim, cevirdim :) bu hale geldi.
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

oasln

Alıntı yapılan: 817c0d3r - 01 Ağustos 2015 - 20:35:50
Ben bir tane daha ekleyim.
@Reverser, siz cozerseniz ozelden cevabi yazarsiniz. Biraz diger arkadaslara firsat verelim.
1 hafta kadar bekleyelim.Cozen olmazsa cevabi yazarsiniz.
s6.dosya.tc/server/714pyc/killme.zip.html

Özel mesaj atmayı bulamadım sitede (belki mesaj sayımdan dolayı bende aktif değil), ben de ilk defa bir örneği çözdüğüm için kendimi bayrak etme gereği duydum, bu yeni kuralı daha sonra uygulayalım :-)

$ xxd sifre.txt
00000000: 3533 6372 3337 6631 6167                 53cr37f1ag
--

7hr33l3t73r

Tebrikler @oasln.
Cozum yonteminizi  aciklayabilirsiniz.
Vidyo olursa, iyi olur.Cekirdeklerimi alir ben de izlerim. :) Severim vidyo izlemesini.
dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

Reverser

ooo vidyo severiz mısır patlatayım bende :P

XFCE ROCKS !
Powered by Thunar & XFWM4



Sh4oTT

Takip ediyorum ama bisey anlamiyorum video olursa belki bbirazcik anlarim :) [emoji14]

h454n

#342
@oasln, hocam uzun zamandır video göremedik.Ônceleri ne güzel video da paylaşılıyordu.Güzel oluyordu.Şimdi sadece çòzüm yada cevap.
Gerçekten de bir video iyi olurdu.Eğer zaman ayırıp bìr vîdeo yùklerseniz cok makbule geçer hocam.

oasln

Tamam hazırlıyorum bir tane daha önce hiç video deneyimim yok ama :)
--

h454n

@oasln, hocam ben mi? Yanlış bir şey yapıyorum.Anlamadım.
Sizin verdíğiniz kelimeyi, şífre.txt yazıyorum ama yìne bir şey olmamakta.
Yani ben mi? Yanliş anladım programı, bılemedim. :(
Doğru kelimeyí, şífre dosyasına girínce, belirtilen mesajı vermesi gerekmiyor mu?

betseg

O şekilde yaparsanız otomatik olarak sonunda yeni satır oluşur (0a karakteri). Engellemek için hexedit vb. gibi bir programla yazmanız gerekir sifre.txt'yi.

h454n

Hmm, Şimdí oldu.Ben uç birimden prínt ile yazdırıyordum.
Metin düzenleyicísí íle yazdırınca sorun olmadı.
Teşekkúrler bilgí icín.

Reverser


XFCE ROCKS !
Powered by Thunar & XFWM4



Sh4oTT

Bende sabirsizlikla bekliyorum :)

oasln

Neymis arkadas bu video ya. İyi ki ömrümüzde bir sifre.txt bulduk :)

Buyrun: https://www.youtube.com/watch?v=Q3dGB0M1fFY

En ideal çözüm muhtemelen bu değildir ama ben böyle yaptım :)
--