Недавно было открыто несколько новых метапрограмных техник в C++, позволяющих реализовать рефлексию, работающую "из коробки". В докладе я расскажу об этих техниках, покажу примеры использования и расскажу об их применимости в C++17. Желающие уже сейчас могут начать экспериментировать с рефлексией, используя библиотеку https://github.com/apolukhin/magic_get
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016Loïc Knuchel
Vous commencez à en entendre parler de plus en plus mais vous avez encore du mal à voir ce que c’est et à comprendre de que ça change concrètement, ce talk est fait pour vous !!!
La programmation fonctionnelle est une manière de programmer basée sur les fonctions qui permet de faire du code vraiment modulaire, améliorer la qualité et limiter les bugs. Vous ne me croyez pas ? Venez voir cette session !
Хочется чего-то новенького, необычного? Тогда добро пожаловать в мир чудеc C++17:
if constexpr (auto& [number, ok] = variable; ok)
return "Hi"
else
return number + 42;
Вы услышите о новом стандарте C++, обнаружите для себя новые полезные классы, функции и возможности языка. Для каждой новинки я приведу примеры использования, расскажу о нюансах и подводных камнях.
А ещё вы узнаете о том, как проходят заседания комитета по стандартизации C++ и сможете задать интересующие вас вопросы связанные с нововведениями С++17 и С++Next.
Недавно было открыто несколько новых метапрограмных техник в C++, позволяющих реализовать рефлексию, работающую "из коробки". В докладе я расскажу об этих техниках, покажу примеры использования и расскажу об их применимости в C++17. Желающие уже сейчас могут начать экспериментировать с рефлексией, используя библиотеку https://github.com/apolukhin/magic_get
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016Loïc Knuchel
Vous commencez à en entendre parler de plus en plus mais vous avez encore du mal à voir ce que c’est et à comprendre de que ça change concrètement, ce talk est fait pour vous !!!
La programmation fonctionnelle est une manière de programmer basée sur les fonctions qui permet de faire du code vraiment modulaire, améliorer la qualité et limiter les bugs. Vous ne me croyez pas ? Venez voir cette session !
Хочется чего-то новенького, необычного? Тогда добро пожаловать в мир чудеc C++17:
if constexpr (auto& [number, ok] = variable; ok)
return "Hi"
else
return number + 42;
Вы услышите о новом стандарте C++, обнаружите для себя новые полезные классы, функции и возможности языка. Для каждой новинки я приведу примеры использования, расскажу о нюансах и подводных камнях.
А ещё вы узнаете о том, как проходят заседания комитета по стандартизации C++ и сможете задать интересующие вас вопросы связанные с нововведениями С++17 и С++Next.
В своих прошлых докладах (http://cpp-russia.ru/?p=198, и http://cpp-russia.ru/?page_id=1239) я рассказывал о C++ без исключений, как с эти жить, как работать. Этот доклад является продолжением этой серии. Я рекомендую освежить в памяти предыдущие доклады, чтобы наша работа была более продуктивной. Мы обсудим механизмы создания, копирования и перемещения объектов, механизмы аллокации и деаллокации памяти, а также обработку ошибок и исключений. Также мы обсудим проблемы и неудобства, которые испытывает программист, когда пишет код без исключений. В конце, я попытаюсь показать, как можно проектировать структуры данных, контейнеры для удобной работы в средах с исключениями и без исключений.
Семейство библиотек clang предоставляет разработчикам широчайшие возможности по реализации различных инструментов, основанных на разборе и анализе абстрактного синтаксического дерева (AST). В частности, авторы clang выпускают такой инструмент, как clang-tidy, который является мощным статическим анализатором кода. Мы разберемся, как этот инструмент применить в процессе разработки для С++ и как дополнить его собственными проверками. Попутно разберемся с некоторыми занимательными особенностями AST для С++.
Slide utilizado no curso preparatório para a certificação OCAJP7. Nessa aula aprendemos sobre a sobrecarga e a sobrescrita de métodos. http://www.sitedoph.com.br/preparatorio-para-a-certificacao-java-ocajp-7-aula-2/
Cloud Managed Router merupakan hasil dari kombinasi antara perangkat router konvensional dengan teknologi cloud management, yang dikembangkan agar memudahkan pengguna untuk dapat mengatur perangkat router dari jarak jauh. Namun tentu saja dengan penerapan yang kurang tepat, maka hal ini bisa dimanfaatkan oleh orang yang tidak bertanggung jawab, bahkan dapat beresiko akses perangkat router diambil alih. Pada topik ini saya akan sedikit menceritakan bagaimana resiko tersebut bisa terjadi.
idsecconf2023 - Neil Armstrong - Leveraging IaC for Stealthy Infrastructure A...idsecconf
Kesiapan infrastruktur terkadang menjadi kendala dalam melaksanakan red team exercise secara internal. Guna memperoleh hasil yang optimal terdapat beberapa strong points yang perlu diadopsi dalam pengembangan infrastruktur yakni rapid deployment, stealth, dan scalability. Melalui Infrastructure as code (IaC) yang dapat mendukung proses automation infrastruktur red team, operator dapat mereduksi waktu deployment dengan komponen yang bersifat disposable per engagement. Infrastruktur terbagi menjadi 4 segmen yakni segmen network memanfaatkan WireGuard yang disederhanakan melalui Headscale “Zero Config”. Segmen C2 dan Segmen Phishing merupakan core sections. Segmen SIEM bertujuan mengagregasi dan memproses log dari berbagai komponen seperti reverse proxy pada redirector ataupun C2 server. Manajemen multi-cloud environment memanfaatkan Terraform dengan provisioning yang di-handle menggunakan Ansible. Python sebagai wrapper kedua platform sehingga penggunaan tetap sederhana. Operator dapat secara fleksibel mendeskripsikan segmen yang hendak di deploy melalui sebuah YAML file.
В своих прошлых докладах (http://cpp-russia.ru/?p=198, и http://cpp-russia.ru/?page_id=1239) я рассказывал о C++ без исключений, как с эти жить, как работать. Этот доклад является продолжением этой серии. Я рекомендую освежить в памяти предыдущие доклады, чтобы наша работа была более продуктивной. Мы обсудим механизмы создания, копирования и перемещения объектов, механизмы аллокации и деаллокации памяти, а также обработку ошибок и исключений. Также мы обсудим проблемы и неудобства, которые испытывает программист, когда пишет код без исключений. В конце, я попытаюсь показать, как можно проектировать структуры данных, контейнеры для удобной работы в средах с исключениями и без исключений.
Семейство библиотек clang предоставляет разработчикам широчайшие возможности по реализации различных инструментов, основанных на разборе и анализе абстрактного синтаксического дерева (AST). В частности, авторы clang выпускают такой инструмент, как clang-tidy, который является мощным статическим анализатором кода. Мы разберемся, как этот инструмент применить в процессе разработки для С++ и как дополнить его собственными проверками. Попутно разберемся с некоторыми занимательными особенностями AST для С++.
Slide utilizado no curso preparatório para a certificação OCAJP7. Nessa aula aprendemos sobre a sobrecarga e a sobrescrita de métodos. http://www.sitedoph.com.br/preparatorio-para-a-certificacao-java-ocajp-7-aula-2/
Cloud Managed Router merupakan hasil dari kombinasi antara perangkat router konvensional dengan teknologi cloud management, yang dikembangkan agar memudahkan pengguna untuk dapat mengatur perangkat router dari jarak jauh. Namun tentu saja dengan penerapan yang kurang tepat, maka hal ini bisa dimanfaatkan oleh orang yang tidak bertanggung jawab, bahkan dapat beresiko akses perangkat router diambil alih. Pada topik ini saya akan sedikit menceritakan bagaimana resiko tersebut bisa terjadi.
idsecconf2023 - Neil Armstrong - Leveraging IaC for Stealthy Infrastructure A...idsecconf
Kesiapan infrastruktur terkadang menjadi kendala dalam melaksanakan red team exercise secara internal. Guna memperoleh hasil yang optimal terdapat beberapa strong points yang perlu diadopsi dalam pengembangan infrastruktur yakni rapid deployment, stealth, dan scalability. Melalui Infrastructure as code (IaC) yang dapat mendukung proses automation infrastruktur red team, operator dapat mereduksi waktu deployment dengan komponen yang bersifat disposable per engagement. Infrastruktur terbagi menjadi 4 segmen yakni segmen network memanfaatkan WireGuard yang disederhanakan melalui Headscale “Zero Config”. Segmen C2 dan Segmen Phishing merupakan core sections. Segmen SIEM bertujuan mengagregasi dan memproses log dari berbagai komponen seperti reverse proxy pada redirector ataupun C2 server. Manajemen multi-cloud environment memanfaatkan Terraform dengan provisioning yang di-handle menggunakan Ansible. Python sebagai wrapper kedua platform sehingga penggunaan tetap sederhana. Operator dapat secara fleksibel mendeskripsikan segmen yang hendak di deploy melalui sebuah YAML file.
Dalam dunia keamanan siber, sinergi antara berbagai proses memiliki peran yang sangat penting. Salah satu proses atau framework yang tengah menjadi sorotan dan menarik perhatian luas adalah Detection Engineering. Proses Detection Engineering ini bertujuan untuk meningkatkan struktur dan pengorganisasian dalam pembuatan detection use case atau rules di Security Operation Center (SOC). Detection Engineering bisa dikatakan masih baru dalam dunia keamanan siber, sehingga terdapat banyak peluang untuk membuat keseluruhan prosesnya menjadi lebih baik. Salah satu hal yang masih terlupakan adalah integrasi antara proses Detection Engineering dan Threat Modeling. Biasanya, Threat Modeling lebih berfokus pada solusi pencegahan dan mitigasi resiko secara langsung dan melupakanan komponen deteksi ketika pencegahan dan mitigasi tersebut gagal dalam menjalankan fungsinya. Dalam makalah ini, kami memperkenalkan paradigma baru dengan mengintegrasikan Detection Engineering ke dalam proses Threat Modeling. Pendekatan ini menjadikan Detection sebagai langkah proaktif tambahan, yang dapat menjadi lapisan pertahanan ekstra ketika kontrol pencegahan dan mitigasi akhirnya gagal dalam menghadapi ancaman sesungguhnya.
idsecconf2023 - Rama Tri Nanda - Hacking Smart Doorbell.pdfidsecconf
Smart doorbell atau bel pintar telah menjadi populer dalam sistem keamanan rumah pintar. Namun, banyak dari perangkat ini masih menggunakan protokol yang tidak aman untuk berkomunikasi, protokol yang rentan terhadap serangan keamanan seperti jamming, sniffing dan replay attack. Penelitian ini bertujuan untuk menganalisis kelemahan penggunaan protokol komunikasi pada smart doorbell, serta menginvestigasi potensi pemanfaatan Software Defined Radio (SDR) dan modul arduino dalam mengamati komunikasi gelombang elektronik pada frekuensi 433 MHz. Selain itu penelitian ini ditujukan untuk mengidentifikasi potensi risiko yang dihadapi oleh pengguna pengkat IoT, serta memberikan pandangan tentang perlindungan yang lebih baik.
Modern organizations are facing the severe challenge of effectively countering threats and mitigating Indicators of Compromise (IOCs) within their network environments. The increasing complexity and volume of cyber threats has highlighted the urgency of building robust mechanisms to block specific IOCs independently. While some organizations have adopted Endpoint Detection and Response (EDR) systems, these solutions often have limitations and require manual processes to collect and examine IOCs from multiple sources. These operational barriers prevent organizations from achieving a proactive and efficient defense posture, an obstacle that is particularly important due to the critical role that IOC blocking plays in containing the spread of threats and limiting potential damage. Hence, the need for a solution that orchestrates automated IOC blocking, utilizing tools such as AlienVault Open Threat Exchange (OTX), VirusTotal, CrowdStrike, and Slack. In this presentation, we examine the importance of automated IOC blocking and its potential to strengthen network security, while highlighting the critical role that these tools play in mitigating evolving cyber threats.
idsecconf2023 - Aan Wahyu - Hide n seek with android app protections and beat...idsecconf
Pembahasan ini bertujuan untuk memberikan edukasi tentang mekanisme perlindungan yang diterapkan pada aplikasi android seperti root detection, ssl pinning, anti emulation, tamper detection dan bagaimana teknik yang digunakan untuk melakukan mekanisme bypass proteksi yang diimplementasikan dengan bantuan reverse engineering menggunakan tool seperti frida, ghidra, objection, magisk, dan sebagainya.
idsecconf2023 - Satria Ady Pradana - Launch into the Stratus-phere Adversary ...idsecconf
Adversary Simulation pada lingkungan cloud memiliki karakteristik unik sehingga memerlukan pendekatan khusus. Stratus menawarkan fleksibilitas dalam melakukan simulasi attack secara native pada lingkungan cloud. Presentasi ini akan memberikan penjelasan tentang penggunaan Stratus dalam adversary simulation dan bagaimana mengembangkan skenario khusus sesuai kebutuhan.
Ali - The Journey-Hack Electron App Desktop (MacOS).pdfidsecconf
Semakin berkembangnya teknologi di aplikasi Desktop terdapat celah keamanan yang dapat menyebabkan dampak langsung atau tidak langsung pada kerahasiaan, Integritas Data yang di bangun menggunakan Framework dari Electron khusus nya aplikasi Desktop di Sistem Operasi MAC. Dalam materi yang di persentasikan akan membahas celah keamanan Security Misconfiguration,RCE,Code Injection, Bypass File Quarantine dan juga bagaiman cara intercept Aplikasi Electron Desktop di system operasi macOS
Muh. Fani Akbar - Infiltrate Into Your AWS Cloud Environment Through Public E...idsecconf
Amazon Web Service (AWS) menjadi pemain besar dalam industri provider cloud, AWS menawarkan berbagai macam layanan yang mempermudah pengguna untuk operasional dan manajemen administrasi cloud computing. Dengan banyaknya layanan yang disediakan oleh Amazon Web Service membuat pengguna lupa akan keamanan dari service yang digunakan, karena bukan hanya Simple Storage Service (S3) saja yang bisa secara tidak sengaja mengekspos data sentitif seperti kredensial Database, SSH Private Key, Source code aplikasi atau bahkan data pribadi lain yang bersifat rahasia. Terdapat banyak service yang secara tidak sengaja terekspos ke public seperti EBS Snapshot, RDS Snapshot, SSM Document, SNS topic dan sebagainya. Malicious Actor bisa memanfaatkan Public shared atau exposed untuk melakukan Initial Access ke lingkungan Amazon Web Service pengguna lalu melakukan eksfiltrasi data internal yang rahasia.
Rama Tri Nanda - NFC Hacking Hacking NFC Reverse Power Supply Padlock.pdfidsecconf
Near Field Communication (NFC) saat ini adalah teknologi yang umumnya di gunakan untuk media pembayaran serta akses kontrol untuk keamanan ruangan dan gedung. Tidak terbatas untuk hal itu saja, teknologi NFC juga kerap di implementasikan untuk perangkat IoT. Beberapa perangkat menggunakan NFC tag untuk menyimpan informasi guna sinkronisasi dengan perangkat smartphone. Penggunaan teknologi NFC awalnya dianggap aman karna mengharuskan alat baca dengan tag berada dalam poisisi yang sangat dekat. Sehingga dianggap sulit untuk melakukan penyadapan informasinya. Seiring waktu banyak penilitian mengungkapkan bahwa komunikasi ISO 1443-3 ini bisa di intip dan di terjemahkan ke dalam bentuk perintah serta respon aslinya. Proxmark3 adalah salah satu alat yang dikembangkan untuk keperluan tersebut. Namun ada kondisi dimana perangkat proxmark tidak dapat di fungsikan maksimal lantaran berkurangnya sensititifitas pembaca dan tag ketika ada objek berada diantara keduanya. Di paper ini saya ingin menyajikan hasil penelitian saya tentang penggunaan Dynamic Instrumentation Frida untuk memantau penggunaan modul java nfc dalam platform Android dan menggunakannya untuk melakukan lockpicking pada gembok pintar berbasis NFC.
Arief Karfianto - Proposed Security Model for Protecting Patients Data in Ele...idsecconf
This paper is a documentation of proposed security management for Electronic Health Records which includes security planning and policy, security program, risk management, and protection mechanism. Planning and policy are developed to provide a basic principle of security management at a hospital. The security program in this document includes Risk-Adaptable Access Control (RAdAC) and the implementation of security education, training and awareness (SETA). Regarding risk management, we perform risk identification, inventory of assets, information assets classification, and information assets value assessment, threat identification, and vulnerability assessment. For protection mechanism, we propose biometrics and signature as the authentication methods. The use of firewalls, intrusion detection system and encrypted data transmission is also suggested for securing data, application and network.
Nosa Shandy - Clickjacking That Worthy-Google Bug Hunting Story.pdfidsecconf
Menceritakan pengalaman bug hunting kerentanan clickjacking pada beberapa produk Google dan membahas beberapa teknik untuk melakukan bypass terhadap kerentanan tersebut. Serta menjelaskan clickjacking yang benar berdasarkan pengalaman pribadi
Baskoro Adi Pratomo - Evaluasi Perlindungan Privasi Pengguna pada Aplikasi-Ap...idsecconf
Pelanggaran privasi merupakan suatu hal yang sering ditemui dewasa ini. Salah satu penyebab pelanggaran privasi adalah adanya data privat milik pengguna yang dikirimkan pada server milik aplikasi tanpa seizin pengguna atau adanya pengumpulan data tertentu tanpa izin. Pada penelitian ini, kami menganalisis aplikasi-aplikasi yang didapatkan dari Google Play Store Indonesia untuk dicari apakah ada data privat milik pengguna yang dilanggar privasinya. Penelitian ini menggunakan tiga jenis metode yang utamanya berbasis static analysis; pendekatan reverse-engineering dengan static analysis untuk melihat apakah ada data yang berpotensi mengganggu privasi pengguna, analisis perizinan dan tracker yang dimiliki oleh aplikasi untuk melihat apakah perizinan dan tracker yang dimiliki oleh aplikasi memang tepat sesuai dengan use-case dari aplikasi tersebut, dan analisis regulasi data dengan mengambil data mengenai keamanan data yang diberikan developer ke Google Play Store. Hasil studi menunjukkan bahwa ada beberapa aplikasi yang memang mengambil data privat pengguna yang tidak relevan dengan use-case aplikasi dan mengirimnya ke server milik aplikasi dan pihak ketiga
Utian Ayuba - Profiling The Cloud Crime.pdfidsecconf
Cloud service is often part of broader strategic initiatives, principally digital transformation (DX) and cloud-first. Despite the continued rapid adoption of cloud services, security remains a crucial issue for cloud users. A majority of organizations confirm they are at least moderately concerned about cloud security. However, there is still a gap between using the cloud and the implementation of cloud security by organizations, so retains the rate of cloud crime high. Eliminating or narrowing the gap is necessary so that organizations can continue to take advantage of the cloud securely. Understanding cloud crime would aid in both cloud crime prevention and protection. The purpose of this presentation is to identify how cloud security incidents can occur from both attacker and victim sides. Organizations can use this presentation's results as a reference to develop or improve cloud security programs and eliminate or narrow the gap between cloud utilization and cloud security implementation.
Proactive cyber defence through adversary emulation for improving your securi...idsecconf
Organization using Adversary Emulation plan to develop an attack emulation and/or simulation and execute it against enterprise infrastructure. These activities leverage real-world attacks and TTPs by Threat Actor, so you can identify and finding the gaps in your defense before the real adversary attacking your infrastructure. Adversary Emulation also help security team to get more visibility into their environment. Performing Adversary Emulation continuously to strengthen and improve your defense over the time.
Perkembangan infrastruktur kunci publik di indonesia - Andika Triwidadaidsecconf
UU-ITE pasal 11 melegalkan Tanda Tangan Elektronik, membuat kedudukannya setara dengan tanda tangan basah. Implementasinya mengandalkan Infrastruktur Kunci Publik yang melibatkan beberapa organisasi dan jalinan trust. Akan di bahas gambaran umum implementasi IKP di Indonesia dan berbagai layanan yang telah beroperasi, serta sebagian aspek keamanannya.
Pentesting react native application for fun and profit - Abdullahidsecconf
React Native merupakan framework yang digunakan untuk membuat aplikasi mobile baik itu Android maupun IOS (multi platform). Framework ini memungkinkan developer untuk membuat aplikasi untuk berbagai platform dengan menggunakan basis kode yang sama, yaitu JavaScript.
Dikarenakan aplikasi ini berbasis JavaScript (client side), banyak developer yang tidak memperhatikan celah keamanan pada aplikasi. Terdapat berbagai macam celah keamanan meliputi client side dan server side. Presentasi ini memuat pengalaman saya dalam menemukan celah keamanan pada saat melakukan Penetration Testing pada aplikasi mobile berbasis React Native
Hacking oximeter untuk membantu pasien covid19 di indonesia - Ryan fabellaidsecconf
Pandemi covid-19 melonjak pada gelombang ke-2 di. Untuk mengantisipasi itu pemerintah membagikan oximeter ke puskesmas. Oximeter yang ada dipasaran mengharuskan tenaga kesehatan untuk kontak langsung dengan pasien. Dengan menggunakan Hacked Oxymeter ini dapat mengurangi intensitas bertemu dengan pasien dan mengurangi resiko terpapar covid-19. Secara metodologi, hacking oximeter ini membaca output komunikasi serial pada alat oximeter untuk kemudian diolah oleh mikrokontroler dan dikirim ke MQTT broker untuk diteruskan ke klien yang membutuhkan. Alat ini digunakan oleh pasien yang sedang isoman di hotel, fasilitas Kesehatan atau rumah sakit darurat/lapangan
Vm escape: case study virtualbox bug hunting and exploitation - Muhammad Alif...idsecconf
Eksploitasi kerentanan pada hypervisor semakin banyak diperbincangkan di beberapa tahun ini, dimulai dari kompetisi hacking Pwn2Own pada 2017 yang mengadakan kategori Virtual Machine dalam ajang lombanya, dan juga teknologi-teknologi terkini yang banyak menggunakan hypervisor seperti Cloud Computing, Malware Detection, dll. Hal tersebut menjadi ketertarikan bagi sebagian hacker, security researcher untuk mencari kelemahan dan mengeksploitasi hypervisor. Tulisan ini menjelaskan mengenai proses Vulnerability Research dan VM Escape exploitation pada VirtualBox.
Devsecops: membangun kemampuan soc di dalam devsecops pipeline - Dedi Dwiantoidsecconf
Proses DevSecOps saat ini banyak digunakan dikalangan industri yang membutuhkan kecepatan baik dalam pengembangan maupun implementasi. Setiap tahapan pada pipeline DevSecOps merupakan tahapan yang harus diperhatikan dan masuk kedalam pantauan SOC (Security Operation Center). Untuk itu diperlukan kemampuan SOC untuk bisa memantau setiap pipeline DevSecOps sehingga dapat memberikan gambaran kondisi keamanan pada organisasi
3. Misi kita adalah memberikan arah jalan dari P menuju E. Hal ini dapat dilakukan dengan
algoritma BFS. Buat script untuk melakukannya secara otomatis.
#!/usr/bin/envpython
frompwnimport*
dr=[0,1,0,-1]
dc=[1,0,-1,0]
dd=['R','D','L','U']
defbfs(maze,rowc,colc):
queue=[(rowc,colc,[])]
visited=set()
whilequeue:
r,c,l=queue.pop(0)
visited.add((r,c))
forkinrange(4):
row=r+dr[k]
col=c+dc[k]
ifrow<0orrow>=len(maze):
continue
ifcol<0orcol>=len(maze[0]):
continue
ifmaze[row][col]=='E':
returnl+[dd[k]]
ifmaze[row][col]!='':
continue
if(row,col)invisited:
continue
queue.append((row,col,l+[dd[k]]))
r=remote('62.4.3.98',10111)
printr.recvuntil("start")
r.recvline()
r.sendline("")
while1:
s=r.recvline()
prints
if"flag"ins:
prints
break
s=r.recvline()
s=s.split()
row=int(s[-1].strip())
s=r.recvline()
s=s.split()
col=int(s[-1].strip())
printrow,col
2
4.
maze=[]
foriinrange(row):
s=r.recvline().strip()
maze.append(s)
if'P'ins:
rowc=i
colc=s.index('P')
forcinbfs(maze,rowc,colc):
printr.recvline(),
r.recvline()
r.sendline(c)
s=r.recvline()
if"flag"ins:
prints
break
r.sendline("")
Setelah maze ke-10, didapatkan flag.
Flag: flag{pOwer_pOLe_paPAh}
Reverse
Logang (20 pts)
Diberikan sebuah binary ELF 32-bit yang menggunakan bahasa Go. Langkah pertama dalam
reversing biasanya adalah mencari flag dengan menggunakan command strings dan grep.
$stringslogang|grep-iE"^[a-zA-Z0-9_{}]*$"|less
Terdapat string menarik, yaitu flag{, go_rEverse, dan _aLa_pApah}. Jika digabungkan
akan didapatkan flag.
Flag: flag{go_rEverse_aLa_pApah}
Darwin (100 pts)
Diberikan sebuah binary Mach-O 32 bit. Setelah melakukan decompile dengan IDA Pro,
pseudocode-nya adalah sebagai berikut.
3
5. signedintstart(){
memset(v3,0,0x20u);
printf("Enterthekey:");
v2=0;
fgets(v3,32,__stdinp);
while(v2<32){
v0=0;
if(v3[v2]==10)
v0=-10;
v3[v2++]+=v0;
}
if(sub_1A30(v3))
printf("Congratz,theflag:nflag{yOu_%s_3v3r}n",v3);
else
printf("Wrong%snotthekey.n",v3);
}
Program meminta masukan key, lalu dilakukan pengecekan dengan fungsi sub_1A30. Jika
fungsi bernilai true, maka flag-nya adalah flag{yOu_<key>_3v3r}.
boolsub_1A30(char*a1){
v18=strlen(a1);
v17=0;
v16=0;
v15=0;
v14=0;
v13=0;
v12=0;
for(i=0;i<v18;++i){
if(i%2)
v7=*(a1+i)^v14;
else
v7=v14;
v14=v7;
if(i%2==1)
v6=v13;
else
v6=*(a1+i)^v13;
v13=v6;
if(i%2)
v5=0;
else
v5=*(a1+i);
v17+=v5;
if(i%2==1)
v4=*(a1+i)^v15;
else
v4=v15;
v15=v4;
}
4
7. Terdapat beberapa kondisi yang harus dipenuhi variabel tersebut, yang akan kita sebut
constraint. Permasalahan constraint seperti ini dapat dicari solusinya dengan cepat dengan
menggunakan Z3. Solver script untuk constraint ini adalah sebagai berikut.
#!/usr/bin/envpython3
fromz3import*
importstring
importitertools
length=13
X=[BitVec('x%s'%i,32)foriinrange(length)]
s=Solver()
#charsetconstraint,letters+digits+underscore
foriinrange(len(X)):
s.add(Or(
And(X[i]>=ord('A'),X[i]<=ord('Z')),
And(X[i]>=ord('a'),X[i]<=ord('z')),
And(X[i]>=ord('0'),X[i]<=ord('9')),
X[i]==ord('_')
))
xor_half=X[0]
foriinrange(1,len(X)//2):
xor_half^=X[i]
xor_even=X[0]
add_even=X[0]
xor_odd=X[1]
add_odd=X[1]
foriinrange(2,len(X)):
ifi%2==0:
xor_even^=X[i]
add_even+=X[i]
else:
xor_odd^=X[i]
add_odd+=X[i]
v3=23
foriinrange(len(X)):
v3=(X[i]<<i)+7*v3
v3=v3>>4
s.add(add_even%10==8)
s.add(add_odd%10==add_even%10)
s.add(xor_even^xor_odd==90)
s.add(xor_half==21)
s.add(xor_odd==56)
s.add((add_odd+add_even)/10==116)
6
11.
void__usercallsub_4010B9(inta1@<esi>){
for(i=0;i<25&&(*(byte_405037[i]+a1)^*(byte_405031[i%6]+
a1))==byte_405051[i];++i){
}
}
Fungsi tersebut hanyalah looping yang dalamnya kosong. Akan tetapi, saya menduga fungsi
tersebut melakukan pengecekan apakah input kita sudah benar apa belum, yaitu benar jika
berhasil melakukan looping dari awal sampai akhir.
Pseudocode-nya dapat disederhanakan lagi seperti ini.
filename=GetFileName()
filename=filename[:-(4*(len(filename)%11))]
v_sha256=sha256(filename)
check(v_sha256)
xor=v_sha256^unk_405000
ifmd5(xor)==unk_405021:
flag=xor
else:
nope
Nama file haruslah mempunyai panjang yang jika di-modulus 11 bernilai 1, karena saya
mengasumsikan hal tersebut untuk menghilangkan string “.exe” (panjangnya 4, sehingga -4 *
1 = -4) pada variabel filename. Dengan asumsi tersebut, panjang minimum filename
adalah 12, dengan 4 karakter terakhir adalah “.exe”. Dengan asumsi possible characters adalah
[A-Za-z0-9_]{8}, maka jika dilakukan bruteforce dibutuhkan percobaan sebanyak 63 ** 8
=248155780267521 kali, sehingga tidak feasible dilakukan.
Cara lainnya adalah dengan menggunakan constraint dari fungsi sub_4010B9. Fungsi tersebut
disederhanakan menjadi seperti ini.
defcheck(v_sha256):
foriinrange(25):
ifv_sha256[idx1[i]]^v_sha256[idx2[i%6]]!=check_sha256[i]:
returnFalse
returnTrue
Masalah lainnya adalah setiap byte pada v_sha256 dapat bernilai dari 0x00 hingga 0xFF,
sehingga bruteforce juga tidak feasible. Akan tetapi, jika diperhatikan, nilai variabel xor adalah
flagnya! Sehingga pasti karakter pada xor hanyalah [A-Za-z0-9_{}], dimulai dengan
string flag{, dan diakhiri karakter }. Dengan begitu, key space untuk melakukan bruteforce
10
12. jauh berkurang. Permasalahan constraint seperti ini dapat dicari solusinya dengan Z3. Terakhir,
lakukan pengecekan dengan MD5. Jika salah, cari solusi lain. Jika benar, maka solusi tersebut
sudah tepat. Solver untuk soal ini adalah sebagai berikut.
#!/usr/bin/envpython3
fromz3import*
fromhashlibimportmd5
defmain():
xor_sha=[0x67,0x72,0x9F,0x0C7,0x0B1,0x96,0x72,0x4B,0x19,0x82,
0x35,0x0C,0x0E7,0x0D6,0x0AD,0x0A9,0x9F,0x3D,0x0A6,0x68,0x89,
0x0F6,0x25,0x0A6,0x0A0,0x96,0x8F,0x64,0x0D4,0x56,0x0F4,0x0BE]
md5_flag=[0x9F,0x0A,0x24,0x0BA,0x92,0x85,0x0EB,0x5E,0x0FC,
0x0DB,0x57,0x0C2,0x3A,0x5,0x63,0x0F7]
md5_flag=bytes(md5_flag)
check=[0x0C9,0x0E0,0x0D8,0x9F,0x25,0x0FD,0x0AB,0x99,0x0C8,
0x1E,0x3A,0x0B5,0x5C,0x4C,0x0BB,0x0B,0x1E,0x2D,0x1C,0x3C,0x22,
0x3E,0x0B0,0x0DC,0x0D8]
idx1=[0x13,0x8,0x0E,0x0B,0x18,0x0D,0x1B,0x11,0x5,0x14,0x17,
0x1E,0x19,0x0C,0x1C,0x10,0x9,0x1D,0x1A,0x0F,0x7,0x15,0x0A,0x12,
0x6,0x16]
idx2=[0x2,0x4,0x0,0x3,0x1F,0x1]
s=Solver()
X=[BitVec('x%s'%i,8)foriinrange(32)]
#checker'sconstraints
fori,cinenumerate(check):
i1=idx1[i]
i2=idx2[i%6]
s.add((X[i1]^X[i2])==c)
#charsetconstraints
fori,xinenumerate(X):
x_xor=x^xor_sha[i]
s.add(Or(
And(x_xor>=ord('A'),x_xor<=ord('Z')),
And(x_xor>=ord('a'),x_xor<=ord('z')),
And(x_xor>=ord('0'),x_xor<=ord('9')),
x_xor==ord('_'),
x_xor==ord('{'),
x_xor==ord('}'),
))
#suffixandprefixconstraints
s.add(X[0]^xor_sha[0]==ord('f'))
s.add(X[1]^xor_sha[1]==ord('l'))
s.add(X[2]^xor_sha[2]==ord('a'))
s.add(X[3]^xor_sha[3]==ord('g'))
s.add(X[4]^xor_sha[4]==ord('{'))
s.add(X[-1]^xor_sha[-1]==ord('}'))
11
13.
#exploreallsolutions
whiles.check()==sat:
m=s.model()
sha256=[m.evaluate(x).as_long()forxinX]
flag=[x^xor_sha[i]fori,xinenumerate(sha256)]
#checkmd5
h=md5(bytes(flag))
ifh.digest()==md5_flag:
sha256=''.join([hex(c)[2:].zfill(2)forcinsha256])
flag=''.join([chr(c)forcinflag])
print("SHA256:",sha256)
print("Flag:",flag)
break
#preventsamemodelfornextsolution
s.add(Or([x!=m[x]forxinX]))
if__name__=='__main__':
main()
Didapat SHA-256 untuk filename adalah
011efea0cac926232add733f86e3d9f6ab53c237be9e40f9e6a2e255ba33abc3 yang
jika di-googling merupakan hash dari kata P4ssw0rd. Sehingga jika nama file diganti dari
siapaaku.exe menjadi P4ssw0rd.exe, flag akan ditampilkan.
Flag: flag{_Th3_F3a5t_4nd_7he_F4m1ne_}
12