├── 9447 CTF 2015
└── The real flag finder
│ ├── flagFinderRedux
│ ├── redux.rr2
│ └── solve.py
├── Atenea CTF
├── Counter
│ ├── Counter-d060ed1dd46ee60319b7013d2b65f186.exe
│ └── README.md
├── Crackme- if you can...
│ └── README.md
├── Saint Seiya
│ ├── README.md
│ ├── Saint_Seiya-3db53d5cf73c57e698c0687738404478.exe
│ └── dissas.PNG
├── Spear Phising... Can you catch me
│ └── README.md
└── WannaCry
│ ├── README.md
│ └── wannacry.exe
├── CSAW 2016
└── Gametime
│ ├── Captura.PNG
│ ├── README.md
│ └── gametime.exe
├── Defcamp CTF Qualifications 2015
└── entry-language-100
│ ├── r100
│ ├── r100patch
│ ├── r100patch.rr2
│ └── solve.py
├── Flare-On 2018
└── Ultimate Minesweeper
│ ├── Captura.PNG
│ ├── README.md
│ ├── Solve
│ └── Program.cs
│ └── UltimateMinesweeper.exe
├── H4CK1T CTF 2016
└── Crypt00perator
│ ├── crypt0_0perator.py
│ └── crypt0_0perator_56e0a9f07f54b3634ab5cc2b30e5b29e.exe
├── Hack The Box
├── Find The Easy Pass
│ ├── EasyPass.exe
│ ├── README.md
│ ├── output.PNG
│ └── solve.7z
└── Impossible Password
│ ├── README.md
│ ├── impossible_password.bin
│ └── out.png
├── Hacklu CTF 2018
└── Baby Reverse
│ ├── estimate.py
│ └── public
│ ├── chall
│ └── notes
├── HoneyCON CTF 2018
├── Basic Conditional Decision
│ └── rev3
├── Brute Me
│ ├── rev4
│ └── solve.py
└── Ultra Secure Bank Login
│ └── reto5
├── INSTRUO CTF 2018
└── Tez Bano Tez
│ ├── rev150
│ ├── rev150.rr2
│ ├── rev_patch
│ └── solve.py
├── InCTF 2018
└── Decoy
│ ├── Decoy.exe
│ └── README.md
├── LICENSE
├── Malware Data Science
└── ch1
│ ├── README.md
│ ├── fakepdfmalware.exe
│ ├── fakeword.exe
│ └── ircbot.exe
├── Navarra Lan Party CTF 2018
├── In time
│ ├── in-time
│ ├── intime.rr2
│ └── solve_intime.py
└── Key is the key
│ ├── keyisthekey.bin
│ ├── keyisthekey_patch
│ └── reverse.py
├── PatataCTF
└── Angry Potato
│ ├── angry-potato
│ └── reverse.py
├── Practical Malware Analysis Lab
├── Lab01-01
│ ├── Lab01-01.dll
│ ├── Lab01-01.exe
│ ├── README.md
│ └── recon-lab1-1.py
└── Lab01-02
│ ├── Lab01-02.exe
│ ├── README.md
│ ├── Unpacked_Lab01-02.exe
│ └── recon-lab1-2.py
├── README.md
├── State machine
└── Ret0
│ ├── Ret0.zip
│ └── keygen.py
├── X-MAS CTF 2019
├── LAST_XMAS
└── main
├── babyrevjohnson
└── main
├── basic.asm
├── entropy
├── entropy
└── solver.py
├── r2con2018
├── disqualified
│ ├── disqualified
│ ├── disqualified.rr2
│ └── solve.py
├── forceme
│ ├── forceme
│ ├── reverse-brute.py
│ └── reverse.py
├── psv
│ ├── psv
│ └── solve.py
└── scrabble
│ ├── reverse-brute.py
│ ├── reverse.py
│ └── scrabble
└── whats-a-rune
├── chall.py
├── main-chall.go
└── the
/9447 CTF 2015/The real flag finder/flagFinderRedux:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/9447 CTF 2015/The real flag finder/flagFinderRedux
--------------------------------------------------------------------------------
/9447 CTF 2015/The real flag finder/redux.rr2:
--------------------------------------------------------------------------------
1 | #!/usr/bin/rarun2
2 | program=./flagFinderRedux
3 | arg1="AAAA"
4 |
5 |
--------------------------------------------------------------------------------
/9447 CTF 2015/The real flag finder/solve.py:
--------------------------------------------------------------------------------
1 | import r2pipe
2 |
3 | r = r2pipe.open("./flagFinderRedux")
4 | r.cmd('e dbg.profile=redux.rr2')
5 | r.cmd('doo') # initially you are debugging rarun2
6 | r.cmd("db 0x00400729") #We realize with debugging that the flag is store at this memory address in stack...
7 | r.cmd('dc')
8 | flag = r.cmdj('pxj@rax')
9 | chrlist = []
10 | for x in range(len(flag)):
11 | chrlist.append(chr(int(flag[x])))
12 | if chr(int(flag[x])) == "}":
13 | print (chr(27) + "[0;33m" + "\tFlag: "+"".join(chrlist)+chr(27) + "[0m")
14 | break
15 |
--------------------------------------------------------------------------------
/Atenea CTF/Counter/Counter-d060ed1dd46ee60319b7013d2b65f186.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Atenea CTF/Counter/Counter-d060ed1dd46ee60319b7013d2b65f186.exe
--------------------------------------------------------------------------------
/Atenea CTF/Counter/README.md:
--------------------------------------------------------------------------------
1 | Packed .NET dnspy is your friend :)
2 |
--------------------------------------------------------------------------------
/Atenea CTF/Crackme- if you can.../README.md:
--------------------------------------------------------------------------------
1 | # TL;TR
2 | Challenge
3 | We start finding interesting strings at first. After we realize that the program receive 2 arguments looking at stack memory 3
.
4 | So if we put 2 arguments jle conditional doesn’t jump. Next we need path program to jnz
conditional. Cool, after we enter in a function that retrieve the name of our computer in memory stack ebp-204h
.
5 | We see a loop that compare our first argument with the name of our computer if it is correct go to ret
and continue the program, if not exit. Next we see other important function because in this, compare the second argument and do some aritmetics operations for calculate the password. So the second argument is the password to solve this baby challenge. So --> crypt0.exe name_pc password
.
6 | When our eip
register retrieve cmp
instruction to compare, we realize that the value of edx
register is 0x4e so this is the correct first byte of password and ecx
register is just our first char of second argument.
7 | So in the second lap we see that our second argument was just “N” or 0x4e and don’t put anything more so our ecx
register is 0x0, but edx
register is the second byte of password great!! We win then :)
8 | flag{TRY_BRO}
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Atenea CTF/Saint Seiya/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
--------------------------------------------------------------------------------
/Atenea CTF/Saint Seiya/Saint_Seiya-3db53d5cf73c57e698c0687738404478.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Atenea CTF/Saint Seiya/Saint_Seiya-3db53d5cf73c57e698c0687738404478.exe
--------------------------------------------------------------------------------
/Atenea CTF/Saint Seiya/dissas.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Atenea CTF/Saint Seiya/dissas.PNG
--------------------------------------------------------------------------------
/Atenea CTF/Spear Phising... Can you catch me/README.md:
--------------------------------------------------------------------------------
1 | Windows Defender is your friend :/
2 | Challenge
3 |
--------------------------------------------------------------------------------
/Atenea CTF/WannaCry/README.md:
--------------------------------------------------------------------------------
1 | Baby challenge :)
2 |
--------------------------------------------------------------------------------
/Atenea CTF/WannaCry/wannacry.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Atenea CTF/WannaCry/wannacry.exe
--------------------------------------------------------------------------------
/CSAW 2016/Gametime/Captura.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/CSAW 2016/Gametime/Captura.PNG
--------------------------------------------------------------------------------
/CSAW 2016/Gametime/README.md:
--------------------------------------------------------------------------------
1 | # TL;TR
2 | We just need after playing the game is patch instruction to jz
when we got failed and jumping to the success instead. Also it would be nice set a breakpoint after the conditional jump.
3 | 
4 |
--------------------------------------------------------------------------------
/CSAW 2016/Gametime/gametime.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/CSAW 2016/Gametime/gametime.exe
--------------------------------------------------------------------------------
/Defcamp CTF Qualifications 2015/entry-language-100/r100:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Defcamp CTF Qualifications 2015/entry-language-100/r100
--------------------------------------------------------------------------------
/Defcamp CTF Qualifications 2015/entry-language-100/r100patch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Defcamp CTF Qualifications 2015/entry-language-100/r100patch
--------------------------------------------------------------------------------
/Defcamp CTF Qualifications 2015/entry-language-100/r100patch.rr2:
--------------------------------------------------------------------------------
1 | #!/usr/bin/rarun2
2 | program=./r100patch
3 | stdin="Code_"
4 | stdout=
5 |
--------------------------------------------------------------------------------
/Defcamp CTF Qualifications 2015/entry-language-100/solve.py:
--------------------------------------------------------------------------------
1 | import r2pipe
2 |
3 | r = r2pipe.open("./r100patch")
4 | r.cmd('e dbg.profile=r100patch.rr2')
5 | r.cmd('doo') # initially you are debugging rarun2
6 | r.cmd('db 0x00400771')
7 | r.cmd('dc')
8 | #print r.cmd('drj')
9 | def step():
10 | r.cmd('ds')
11 | r.cmd('sr rip')
12 | while True:
13 | list_ = []
14 | disass = []
15 | try:
16 | if r.cmdj('drj')["rip"] == 4196212:
17 | break
18 | except TypeError:
19 | print("No more RIP instruction, breaking loop")
20 | break
21 | print (chr(27) + "[1;36m" + "[+] STAGE 1 - SOLVE: Lenght of password is 11 = 0xb" + chr(27) + "[0m")
22 | while True:
23 | instruction = r.cmdj('pdj 1')[0]
24 | try:
25 | if r.cmdj('drj')["rip"] == 4196212:
26 | key = r.cmdj('drj')["rax"]
27 | print(key)
28 | password = key-1
29 | print(r.cmd('drj'))
30 | print (chr(27) + "[0;33m" + "\tSUB Operation EDX-EAX and flag value: " +chr(password)+chr(27) + "[0m")
31 | list_.append(chr(password))
32 | except TypeError:
33 | print("No more RIP instruction, breaking loop")
34 | break
35 | if instruction['type'] == 'cmp eax, 1':
36 | if r.cmdj('drj')['rax'] == 1:
37 | continue
38 | else:
39 | break
40 | step()
41 |
--------------------------------------------------------------------------------
/Flare-On 2018/Ultimate Minesweeper/Captura.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Flare-On 2018/Ultimate Minesweeper/Captura.PNG
--------------------------------------------------------------------------------
/Flare-On 2018/Ultimate Minesweeper/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
--------------------------------------------------------------------------------
/Flare-On 2018/Ultimate Minesweeper/Solve/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ultimate_Minesweeper
8 | {
9 | class Program
10 | {
11 | static void Main(string[] args)
12 | {
13 | uint grid = 30u; //VALLOC_NODE_LIMIT
14 | uint VALLOC_TYPE_HEADER_PAGE = 4294966400u;
15 | uint VALLOC_TYPE_HEADER_POOL = 4294966657u;
16 | uint VALLOC_TYPE_HEADER_RESERVED = 4294967026u;
17 | uint DeriveVallocType(uint r, uint c)
18 | {
19 | return ~(r * grid + c);
20 | }
21 | uint[] VALLOC_TYPES = new uint[3]
22 | {
23 | VALLOC_TYPE_HEADER_PAGE,
24 | VALLOC_TYPE_HEADER_POOL,
25 | VALLOC_TYPE_HEADER_RESERVED
26 | };
27 | for (uint num = 0u; num < grid; num += 1u)
28 | {
29 | for (uint num2 = 0u; num2 < grid; num2 += 1u)
30 | {
31 | bool flag = true;
32 | uint row = num + 1u;
33 | uint colm = num2 + 1u;
34 | if (VALLOC_TYPES.Contains(DeriveVallocType(row, colm)))
35 | {
36 | flag = false;
37 | Console.WriteLine("FLAG--> Row:" + row + " Column:" + colm);
38 | Console.ReadLine();
39 | }
40 | }
41 | }
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Flare-On 2018/Ultimate Minesweeper/UltimateMinesweeper.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Flare-On 2018/Ultimate Minesweeper/UltimateMinesweeper.exe
--------------------------------------------------------------------------------
/H4CK1T CTF 2016/Crypt00perator/crypt0_0perator.py:
--------------------------------------------------------------------------------
1 | def main_():
2 | ea = idc.ScreenEA()
3 | print "0x%x %s" % (ea,ea)
4 |
5 |
6 | def debug_(addr):
7 | idc.RunTo(BeginEA())
8 | idc.AddBpt(addr) #breakpoint 004016D5
9 | idc.GetDebuggerEvent(WFNE_SUSP,-1)
10 | idc.RunTo(addr)
11 |
12 |
13 | def help_():
14 | print("""Functions:
15 | debug_(addr)
16 | recon()
17 | solve()""")
18 |
19 | def recon():
20 | stdin = "abcdefghijklmnopqrstuvwxyz01234567890{}"
21 | GetDebuggerEvent(WFNE_SUSP, -1)
22 | rax = idc.GetRegValue('RAX')
23 | print("[+] Value of RAX is: %s "%rax)
24 | cipher = idc.GetString(rax)
25 | print("[+] Value of Substitution cipher is: %s "%cipher)
26 | sc = Strings()
27 | for s in sc:
28 | if s.ea == 4661280:
29 | print "%x: len=%d type=%d --> '%s'" % (s.ea, s.length, s.type, str(s))
30 | key = str(s)
31 | print("[+] Value of Key: %s"%key)
32 | flag = ''
33 | for i in key:
34 | try:
35 | flag += stdin[cipher.index(i)]
36 | print(flag)
37 | except ValueError:
38 | pass
39 | def solve():
40 | stdin = "abcdefghijklmnopqrstuvwxyz01234567890{}"
41 | cipher = "fedcba`onmlkjihwvutsrqp_~}76543210?>|z"
42 | key = "o3dl6s|41a42344d110746d574e35c2f77ab6>3z"
43 | flag = ''
44 | for i in key:
45 | flag += stdin[cipher.index(i)]
46 | print(flag)
47 |
48 | if __name__ == '__main__':
49 | #main_()
50 | #debug_(addr)
51 | #recon()
52 | #solve()
53 | help_()
54 |
--------------------------------------------------------------------------------
/H4CK1T CTF 2016/Crypt00perator/crypt0_0perator_56e0a9f07f54b3634ab5cc2b30e5b29e.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/H4CK1T CTF 2016/Crypt00perator/crypt0_0perator_56e0a9f07f54b3634ab5cc2b30e5b29e.exe
--------------------------------------------------------------------------------
/Hack The Box/Find The Easy Pass/EasyPass.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Hack The Box/Find The Easy Pass/EasyPass.exe
--------------------------------------------------------------------------------
/Hack The Box/Find The Easy Pass/README.md:
--------------------------------------------------------------------------------
1 | # Output
2 | 
3 |
4 | # Solve
5 |
6 | [+] Value of EDX:
7 | 0xAAAAAAA
8 | [+] Your password is: AAAAAAA
9 |
10 |
--------------------------------------------------------------------------------
/Hack The Box/Find The Easy Pass/output.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Hack The Box/Find The Easy Pass/output.PNG
--------------------------------------------------------------------------------
/Hack The Box/Find The Easy Pass/solve.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Hack The Box/Find The Easy Pass/solve.7z
--------------------------------------------------------------------------------
/Hack The Box/Impossible Password/README.md:
--------------------------------------------------------------------------------
1 | # Output
2 | 
3 |
--------------------------------------------------------------------------------
/Hack The Box/Impossible Password/impossible_password.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Hack The Box/Impossible Password/impossible_password.bin
--------------------------------------------------------------------------------
/Hack The Box/Impossible Password/out.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/naivenom/reversing-list/aeba6c734770ccac2824fb12f351a526e019f474/Hack The Box/Impossible Password/out.png
--------------------------------------------------------------------------------
/Hacklu CTF 2018/Baby Reverse/estimate.py:
--------------------------------------------------------------------------------
1 | import random
2 | import sys
3 | import r2pipe
4 | import time
5 |
6 | '''profile: chall.rr2
7 | #!/usr/bin/rarun2
8 | program=./chall
9 | stdin="AAAA"
10 | stdout=
11 | '''
12 | r = r2pipe.open("./chall")
13 | r.cmd('e dbg.profile=chall.rr2')
14 | r.cmd('doo') # initially you are debugging rarun2
15 | r.cmd('db 0x0040008e')
16 | r.cmd('dc')
17 | print r.cmd('drj')
18 | print (chr(27) + "[0;33m" + "[+]Key: "+chr(27) + "[0m")
19 | key = r.cmdj('pxj 46@%s'%0x0040010c)
20 | print(key)
21 | key_value = 10
22 |
23 | def check_key(key):
24 | char_sum = 0
25 | for c in key:
26 | char_sum += ord(c)
27 | sys.stdout.write("{0:3} | {1} \r".format(char_sum, key))
28 | sys.stdout.flush()
29 | return char_sum
30 |
31 | timeout = time.time()+1
32 | print (chr(27) + "[1;36m" + "[+] STAGE 1 - RECON: Estimate first values" + chr(27) + "[0m")
33 | while True:
34 | test = 0
35 | if test == 1 or time.time() > timeout:
36 | break
37 | a = ""
38 | a += random.choice("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_!{}")
39 | b = ""
40 | b += random.choice("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_!{}")
41 | rand_a = check_key(a)
42 | rand_b = check_key(b)
43 |
44 |
45 | xored = rand_a ^ rand_b
46 | if key_value == xored:
47 | print (chr(27) + "[0;33m" + "\n\tEstimate values: %s, %s "%(chr(rand_a),chr(rand_b))+chr(27) + "[0m")
48 | test = test-1
49 |
50 | print (chr(27) + "[1;36m" + "[+] STAGE 2 - SOLVE" + chr(27) + "[0m")
51 | input_zero = raw_input("Input[0]>>>")
52 | input_one = raw_input("Input[1]>>>")
53 | input_n = ord(input_one)
54 | flag = []
55 | for i in range(len(key)-1):
56 | input_n = key[i+1]^input_n
57 | flag.append(chr(input_n))
58 | print("".join(input_zero)+"".join(input_one)+"".join(flag))
59 |
60 | '''
61 |