Yes, I totally agree with iTpHo3NiX. However, it might be hard to even narrow things down when you don't know whats out there.
I will try to categorize the computer knowledge topics and also write a little bit about what you need to learn in order to understand the various categories.
- General computer knowledge
- Programmer knowledge
- Application security
- Web application security
- Other security
- Hacker
Now, okay. This is just a list I came up with right now, it takes care of all the aspects I can think of right now.
General computer knowledgeThis one is the category which in my eyes, everyone that uses a computer should know.
This category will take care of the day to day use of applications, software, games and Internet wisdom. This category does not go in depth on any topics, its like a primer before you go any deeper into the system(s), the average user should know this stuff.
This category should discuss topics like
- GUI and CLI application usage, common sense and how things normally work
- Operating systems, use of OSX, Windows and Linux. Differences, weaknesses and features
- Common sense in the Internet
To learn this stuff you would need a little bit of interest in computing and just take it from there. Use your computer as much as you can. Perhaps read up on a book on Operating systems, as this topic is quite large.
Programmer knowledgeThis category is for people who are creative, who want to create software / applications / services. There is many levels of programming knowledge, in todays world you do not necessary need to know anything about hexadecimal, binary, bits and bytes to be a programmer. However, I do encourage you to learn the very fundamentals on how computers work if you want to become a good programmer. With this knowledge, you should be able to create any kind of program, service or application in one or more languages(including scripts(perl, python, php, bash))
This category should discuss one or more of these topics
- The .Net framework programming languages (VB, C#, C++, (J#?))
- Native C or C++
- Perl or Python
- PHP with MySQL
These topics is a little harder to learn by using your computer alone, so you would most likely want to get a book, tutorial site or community were you can gain knowledge about your topic. Some general knowledge is also required here, as for PHP and such you would need to setup a local or remote server to do testing etc.
Application securityThis category will take care of security and hacking surrounding applications and services. This is one of the larger part of the "hacking" topic. This is definitely a category you must know in order to become a good
jedi hacker.
This category should discuss topics like these
- Buffer overflow
- Stack overflow
- Programming security with non-typesafe languages
- General understanding of the underlaying concepts of programs and computing
These topics is very much based upon knowledge about programming. If you cannot do any programming, you will fail at this category. General computer knowledge is also very much required here.
Learning these topics, I suggest you learn one or more low-level programming languages and gain all the knowledge that comes with that, aswell as C or and C++. Then you should get some form of security book regarding application security.
Web application securityIn todays world, web application security is posing the biggest security issues. Web application security is in a broad term, all hacking you can do from your browser. Meaning, PHP or other script engine flaws, SQL injection, remote file inclusion or remote code execution, local file inclusion or local file execution and so on and so forth.
This category should discuss topics like these
- Web servers
- SQL
- SQL injection with multiple script engines
- Code execution flaws
- RFI, LFI, XSS, CSRF
There are tons and tons and tons of tutorials for all of these topics out on the web, however. I do really, REALLY recommend you learn PHP with MySQL when learning XSS, RFI, LFI, CSRF and SQL injection. I read a ton of tutorials about these topics before I learned PHP, and I could exploit these type of vulnerabilities, however. I did not understand the underlaying happenings, and therefor limited me to only the type of flaws I had read about, not self-evolution of the flaw types.
This category does require some general computer knowledge, perhaps read up on TCP/IP aswell, there is many good books for it.
Other securitySecurity is a VERY broad aspect, there is physical security, social security, virtual security and so on. One who wants to learn x security may not want to learn y security, and so on. Therefore its important to know what topics within security you want to learn.
This category should discuss topics like these
- Social engineering
- Physical security
- Lock picking
- Pickpocketing
- Privacy
Same goes for this category, there is tons of tuts on it out on the web. But there is also a TON of books about these things, so for these topics, I would personally get some books.
Jedi HackerOkay, so. This category is a little special, because, being a hacker you don't need to know everything above. But you need to know alot of them.
This category should discuss topics like these
- 10 or more of the topics above
To learn this, learn everything else.
I hope you learn something from this awfully long reply, if you got further questions, do ask
Also, for all others, if you see fit for more topics or believe I am totally wrong. Do comment.