# Integer Overflow

Uma das anomalias mais simples que talvez possa ser explorada é o Integer Overflow.

Quando um inteiro é somado muitas vezes, seu número pode ultrapassar sua capacidade de representação.

Por exemplo, um inteiro de 4 bytes pode representar do número `-2147483648` ao `2147483647`. Se somarmos 1 a um inteiro de 4 bytes com valor `2147483647`, ele se tornará `-2147483648` por causa da sua representação em complemento de 2 e esse comportamento é chamado de **Integer Overflow**. O comportamento oposto que acontece ao subtrair 1 de `-2147483648` é chamado de **Integer Underflow**.

Uma forma de explorar esse comportamento é caso esse inteiro esteja sendo usado como um *offset* de alguma posição de memória ou uma expressão condicional (if). Fazendo um Integer Overflow, você pode ter acesso a uma posição de memória que o programa não permitia, ou ultrapassar alguma checagem de uma forma não pretendida.

Em geral, um Integer Overflow é uma vunerabilidade bem simples, e na maioria dos casos, não é possível explorar muito com ele. Mas uma forma de overflow bem mais perigosa que o Integer Overflow é o Buffer Overflow, que veremos a seguir.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gitbook.ganeshicmc.com/pwning/integer-overflow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
