This is the second part of compiler which will receive token from lexical analysis. If you are still not familiar with lexical analysis, here is the door.
The goal of parsing Receive sequence of tokens from lexer and output parse tree of the program. Given a very clear example from the course,
1 2 3 4 5 6 7 8 9 if x == y then 1 else 2 # parser input (given by lexer) IF ID == ID THEN INT ELSE INT # parser output IF-THEN-ELSE / | \ / INT INT < > ID ID To summarize,
Return-Oriented-Programming is a basic attack on memory-safety vulnerabilities. If we can arbitrarily overwrite the return address, then we can hijack the control flow. In this article, I would like to introduce a series of ROP attack with practical example in CTF challenges. The following link in each section would be directed to my repository in github.
In here, our first goal is always to call shell.
Basic ROP Start your first ROP here ret2plt return 2 plt We don’t need to build up the whole chain by instructions.
Pointer is one of the most confusing and challenging concepts in C/C++. It is also an important concept in binary analysis and software development; therefore, this article is to say farewell to my difficulty of understanding pointers.
Intro to pointers 1 2 3 type* ptr; // this way is more recommended because type* means type of pointer type * ptr; type *ptr; We always can see these three types of pointer declaration in code.
I enjoy reading this paper. This paper makes everything very clear, and makes announcement about the definition again and again. It mentions his source code in the paper; however, without the open source code. Hope it can release the open repository in the future, it can persuade me more about its effectiveness.
Introduction and Background For software vendors and maintainers, they always can get many reports from users about the bugs.