You are on page 1of 3

GLib is a popular open-source library that provides data structures, utility functions, and other core

functionality for C programming. GLib's memory management system provides a flexible and efficient
mechanism for allocating and freeing memory. However, like any complex software, GLib is not immune
to memory leaks.

A memory leak occurs when a program allocates memory but fails to release it when it is no longer
needed. Over time, this can lead to a buildup of unused memory, which can eventually cause the
program to run out of memory and crash.

In GLib, memory leaks can occur in several ways. For example, if a program allocates memory using a
GLib function such as g_malloc() or g_new(), but fails to free it using g_free(), a memory leak can occur.
Similarly, if a program uses GLib data structures such as GHashTable or GList but fails to remove or delete
them when they are no longer needed, memory leaks can occur.

 To prevent memory leaks in GLib, it's important to follow best practices for memory
management, such as:
o Always free memory that you allocate. Make sure to use the appropriate freeing
function for the allocation function that you used.
o Use GLib's data structures and memory management functions correctly. Be sure to read
the documentation carefully and follow the recommended usage patterns.
o Use tools such as valgrind to detect memory leaks and other memory-related errors in
your programs.
 Overall, memory leaks in GLib can be avoided with careful coding practices and adherence to
best practices for memory management.

Determining which functions to profile depends on your specific use case and what you're trying to
optimize. If you're working on a large codebase, you may want to profile specific functions that are called
frequently or take up a significant amount of processing time. On the other hand, if you're working on a
smaller project, you may want to profile the entire application to get a more comprehensive view of its
performance.

 Some common strategies for identifying functions to profile include:


o Profiling the entire application and examining the results to identify areas for
optimization.
o Analyzing application logs or metrics to identify frequently called functions or slow-
performing functions.
o Using profiling tools to identify bottlenecks or areas of high CPU usage.
 Once you have identified the functions you want to profile, you can use a profiling tool to gather
data on their performance and optimize accordingly.

how to use the memory_profiler module to find memory leaks in the given Python script:

1. Install memory_profiler module using pip:


a. pip install memory_profiler
2. Add the @profile decorator to each function that you want to profile, like this:
a. @profile
b. def malloc(ind, size):
i. ...
3. Run the Python script with the mprof command, like this:
a. mprof run python <script_name>.py
4. After running the script, view the memory usage profile using the mprof command:
a. mprof plot

This will show you a graph of memory usage over time for each function. Look for functions that show a
gradual increase in memory usage over time, which may indicate a memory leak.

Revised exp.py file: I successfully opened a network connection to the IP address 207.154.239.148 on
port 1348. The output indicates that the script has tried to connect to the specified IP address and port
and has succeeded in doing so. From here, it is likely that the script will interact with the remote server
in some way, such as sending and receiving data. You can wait for the script to complete its execution
and see what output it generates to determine whether the exploit was successful or not.

Errors so far:

Potential solutions:

 The error message indicates that gdbserver is not installed on your system. gdbserver is a
separate program that allows for remote debugging with GDB, which is why it is required for the
gdb.debug() function in pwnlib to work.
 modify the pwnlib/util/misc.py file to use os.getpid() instead of os.getuid() for the which
function. Here are the steps you can follow
CLASS

 exploitation
o part 1 address randomization (glibc leak)
o part 2 write what where (edit a chunk in the tcache so it points at target then malloc
until u receive target)
o part 3

You might also like