SMT solvers are magic. They solve CTF challenges like nothing. They are based off SAT Solvers but instead of only taking boolean expressions, they can take integers, arrays, arithmetic operations, etc.
Terminology
Concrete Values
These are constant integer values like 5
,1337
,etc.
Symbolic Values
These are unknown values in expressions.
like x
and y
in the expression 3x+2y=1
Symbolic Execution
The act of reducing the entirety of your program into mathematical equations and control flow
Problem with SMT Solvers
- Only feasible for small problems. Complex problems with several inputs will lead to a path explosion where there are too many possible paths for the computer to go down.