mirror of
https://github.com/cliffe/SecGen.git
synced 2026-02-21 11:18:06 +00:00
Metactf challenge generator updates - local.rb changes
This commit is contained in:
@@ -56,150 +56,41 @@ class MetaCTFChallengeGenerator < StringGenerator
|
||||
end
|
||||
|
||||
def generate
|
||||
candidate_challenges = src_angr + src_csp + src_malware
|
||||
|
||||
# TODO : run through the challenges and adjust difficulty to something more appropriate
|
||||
src_angr = [
|
||||
{:difficulty => 'medium', :path => 'src_angr/00_angr_find'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/01_angr_avoid'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/02_angr_find_condition'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/03_angr_symbolic_registers'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/04_angr_symbolic_stack'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/05_angr_symbolic_memory'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/06_angr_symbolic_dynamic_memory'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/07_angr_symbolic_file'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/08_angr_constraints'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/09_angr_hooks'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/10_angr_simprocedures'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/11_angr_sim_scanf'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/12_angr_veritesting'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/13_angr_static_binary'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/14_angr_shared_library'},
|
||||
# TODO: Replacing 'Good Job with a printflag(); call requires more thought for task 15 - omit for now
|
||||
# '{:difficulty => 'easy', :path => 'src_angr/15_angr_arbitrary_read'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/16_angr_arbitrary_write'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/17_angr_arbitrary_jump'},
|
||||
]
|
||||
|
||||
src_csp = [
|
||||
{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch1_Ltrace'},
|
||||
{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch1_Readelf'},
|
||||
{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch2_01_Endian'},
|
||||
{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch2_01_Showkey'},
|
||||
{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch2_03_IntOverflow'},
|
||||
{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch2_03_TwosComplement'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch1-2/Ch2_03_XorInt'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch1-2/Ch2_05_FloatConvert'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format0_Leak'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format1_LeakDollar'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format2_nCorruptKey'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format3_nWriteKey'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format4_nWriteFnP'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format5_nTargetWrite'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format6_PLTHijack'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_00_GdbIntro'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_00_GdbRegs'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_00_GdbSetmem'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_01_GdbPractice'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_02_AsciiInstr'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_04_FnPointer'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_04_LinkedList'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_05_XorLong'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.1-3.5/Ch3_05_XorStr'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_06_Conditionals'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_06_LoopMulti'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_06_SwitchTable'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_FloatReturn'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_ParamsRegs'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_ParamsStack'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_SegvBacktrace'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_StaticInt'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_StaticStrcmp'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_07_CanaryBypass'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_07_HijackPLT'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_07_ScanfOverflow'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_07_StackSmash'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_08_2DArrays'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_08_Matrix'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_09_Structs'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch5-8/Ch5_08_LoopUnroll'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch5-8/Ch7_13_LdPreloadGetUID'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch5-8/Ch8_05_PsSignals'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch5-8/Ch8_05_Signals'},
|
||||
]
|
||||
|
||||
src_malware = [
|
||||
{:difficulty => 'easy', :path => 'src_malware/Ch01-08/Ch01StatA_Readelf'},
|
||||
{:difficulty => 'easy', :path => 'src_malware/Ch01-08/Ch03DynA_Ltrace'},
|
||||
{:difficulty => 'easy', :path => 'src_malware/Ch01-08/Ch04x86_AsciiInstr'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch04x86_AsciiStrcmp'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch06CAsm_Conditionals'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch06CAsm_LinkedList'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch06CAsm_LoopMulti'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch06CAsm_SwitchTable'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_GdbIntro'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_GdbParams'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_GdbPractice'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_GdbRegs'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_GdbSetmem'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_InputFormat'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_Radare2Intro1'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_Radare2Intro2'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch01-08/Ch08Dbg_StaticInt'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch01-08/Ch08Dbg_StaticRE'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch01-08/Ch08Dbg_StaticStrcmp'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch11MalBeh_HijackPLT'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch11MalBeh_LdPreloadGetUID'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch11MalBeh_LdPreloadRand'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch11MalBeh_NetcatShovel'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch12Covert_ForkFollow'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch12Covert_ForkPipe'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch13DataEnc_BaseEnc'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch13DataEnc_XorEnc'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch15AntiDis_FakeCallInt'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch15AntiDis_FakeCond'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch15AntiDis_FakeMetaConds'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch15AntiDis_InJmp'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch15AntiDis_PushRet'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_BypassPtrace'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_GdbCheckTrace'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_Int3Scan'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_SigtrapCheck'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_SigtrapEntangle'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_SigtrapHijack'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_TimeCheck'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch18-21/Ch18PackUnp_UnpackEasy'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch18-21/Ch18PackUnp_UnpackGdb'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch18-21/Ch21x64_ParamsRegs'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch18-21/Ch21x64_ParamsStack'},
|
||||
]
|
||||
|
||||
challenges = src_angr + src_csp + src_malware
|
||||
|
||||
# Exclusion list to remove duplicate challenges from the candidate pool
|
||||
if self.existing_challenges != []
|
||||
Print.local("Removing #{self.existing_challenges.size.to_s} existing challenge(s)")
|
||||
self.existing_challenges.each do |json_challenge|
|
||||
challenge = JSON.parse(json_challenge)
|
||||
challenges.delete_if do |cha|
|
||||
candidate_challenges.delete_if do |cha|
|
||||
cha[:path] == challenge['challenge_path']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Select a specific challenge if challenge_path is provided.
|
||||
# If candidate_challenges is empty because we already have it, raise an error.
|
||||
if self.challenge_path != ''
|
||||
challenges.delete_if do |challenge|
|
||||
challenge[:path] != self.challenge_path
|
||||
candidate_challenges.delete_if do |cha|
|
||||
cha[:path] != self.challenge_path
|
||||
end
|
||||
if candidate_challenges.size > 0
|
||||
challenge = candidate_challenges.first
|
||||
else
|
||||
Print.err("Error: Challenge declared by challenge_path is either invalid or has already been selected and is included in the existing_challenges exclusion list.")
|
||||
Print.err("self.challenge_path: " + self.challenge_path)
|
||||
Print.err("self.existing_challenges: " + self.existing_challenges.to_s)
|
||||
exit(1)
|
||||
end
|
||||
challenge = challenges.first
|
||||
elsif self.challenge_path == '' and self.difficulty != ''
|
||||
challenges.delete_if do |challenge|
|
||||
candidate_challenges.delete_if do |challenge|
|
||||
challenge[:difficulty] != self.difficulty
|
||||
end
|
||||
|
||||
challenge = challenges.sample
|
||||
challenge = candidate_challenges.sample
|
||||
else
|
||||
# throw an errorr
|
||||
Print.err('Error: MetaCTF Challenge Generator. ')
|
||||
Print.err('Either provide a challenge path or a difficulty.') # TODO: more meaningful error messages here
|
||||
Print.err('Either provide a challenge path or a difficulty.')
|
||||
exit(1)
|
||||
end
|
||||
|
||||
@@ -207,11 +98,125 @@ class MetaCTFChallengeGenerator < StringGenerator
|
||||
self.group = SecureRandom.hex.slice(1..8)
|
||||
end
|
||||
|
||||
|
||||
outputs << {'challenge_name' => challenge[:path].split('/')[-1], 'challenge_path' => challenge[:path], 'flag' => self.flag, 'group' => self.group }.to_json
|
||||
|
||||
end
|
||||
|
||||
# TODO : run through the challenges and adjust difficulty to something more appropriate
|
||||
def src_angr
|
||||
[{:difficulty => 'medium', :path => 'src_angr/00_angr_find'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/01_angr_avoid'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/02_angr_find_condition'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/03_angr_symbolic_registers'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/04_angr_symbolic_stack'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/05_angr_symbolic_memory'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/06_angr_symbolic_dynamic_memory'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/07_angr_symbolic_file'},
|
||||
{:difficulty => 'medium', :path => 'src_angr/08_angr_constraints'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/09_angr_hooks'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/10_angr_simprocedures'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/11_angr_sim_scanf'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/12_angr_veritesting'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/13_angr_static_binary'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/14_angr_shared_library'},
|
||||
# TODO: Replacing 'Good Job with a printflag(); call requires more thought for task 15 - omit for now
|
||||
# '{:difficulty => 'easy', :path => 'src_angr/15_angr_arbitrary_read'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/16_angr_arbitrary_write'},
|
||||
{:difficulty => 'hard', :path => 'src_angr/17_angr_arbitrary_jump'}]
|
||||
end
|
||||
|
||||
def src_csp
|
||||
[{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch1_Ltrace'},
|
||||
{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch1_Readelf'},
|
||||
{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch2_01_Endian'},
|
||||
{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch2_01_Showkey'},
|
||||
{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch2_03_IntOverflow'},
|
||||
{:difficulty => 'easy', :path => 'src_csp/Ch1-2/Ch2_03_TwosComplement'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch1-2/Ch2_03_XorInt'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch1-2/Ch2_05_FloatConvert'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format0_Leak'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format1_LeakDollar'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format2_nCorruptKey'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format3_nWriteKey'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format4_nWriteFnP'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format5_nTargetWrite'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3-ExtraFormatStr/Ch3_Format6_PLTHijack'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_00_GdbIntro'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_00_GdbRegs'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_00_GdbSetmem'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_01_GdbPractice'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_02_AsciiInstr'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_04_FnPointer'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_04_LinkedList'},
|
||||
{:difficulty => 'medium', :path => 'src_csp/Ch3.1-3.5/Ch3_05_XorLong'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.1-3.5/Ch3_05_XorStr'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_06_Conditionals'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_06_LoopMulti'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_06_SwitchTable'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_FloatReturn'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_ParamsRegs'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_ParamsStack'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_SegvBacktrace'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_StaticInt'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.6-3.7/Ch3_07_StaticStrcmp'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_07_CanaryBypass'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_07_HijackPLT'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_07_ScanfOverflow'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_07_StackSmash'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_08_2DArrays'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_08_Matrix'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch3.7-3.9/Ch3_09_Structs'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch5-8/Ch5_08_LoopUnroll'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch5-8/Ch7_13_LdPreloadGetUID'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch5-8/Ch8_05_PsSignals'},
|
||||
{:difficulty => 'hard', :path => 'src_csp/Ch5-8/Ch8_05_Signals'}]
|
||||
end
|
||||
|
||||
def src_malware
|
||||
[{:difficulty => 'easy', :path => 'src_malware/Ch01-08/Ch01StatA_Readelf'},
|
||||
{:difficulty => 'easy', :path => 'src_malware/Ch01-08/Ch03DynA_Ltrace'},
|
||||
{:difficulty => 'easy', :path => 'src_malware/Ch01-08/Ch04x86_AsciiInstr'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch04x86_AsciiStrcmp'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch06CAsm_Conditionals'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch06CAsm_LinkedList'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch06CAsm_LoopMulti'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch06CAsm_SwitchTable'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_GdbIntro'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_GdbParams'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_GdbPractice'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_GdbRegs'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_GdbSetmem'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_InputFormat'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_Radare2Intro1'},
|
||||
{:difficulty => 'medium', :path => 'src_malware/Ch01-08/Ch08Dbg_Radare2Intro2'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch01-08/Ch08Dbg_StaticInt'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch01-08/Ch08Dbg_StaticRE'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch01-08/Ch08Dbg_StaticStrcmp'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch11MalBeh_HijackPLT'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch11MalBeh_LdPreloadGetUID'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch11MalBeh_LdPreloadRand'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch11MalBeh_NetcatShovel'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch12Covert_ForkFollow'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch12Covert_ForkPipe'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch13DataEnc_BaseEnc'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch11-13/Ch13DataEnc_XorEnc'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch15AntiDis_FakeCallInt'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch15AntiDis_FakeCond'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch15AntiDis_FakeMetaConds'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch15AntiDis_InJmp'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch15AntiDis_PushRet'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_BypassPtrace'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_GdbCheckTrace'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_Int3Scan'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_SigtrapCheck'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_SigtrapEntangle'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_SigtrapHijack'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch15-16/Ch16AntiDbg_TimeCheck'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch18-21/Ch18PackUnp_UnpackEasy'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch18-21/Ch18PackUnp_UnpackGdb'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch18-21/Ch21x64_ParamsRegs'},
|
||||
{:difficulty => 'hard', :path => 'src_malware/Ch18-21/Ch21x64_ParamsStack'}]
|
||||
end
|
||||
end
|
||||
|
||||
MetaCTFChallengeGenerator.new.run
|
||||
Reference in New Issue
Block a user