当前位置:网站首页>Attack and defense world - PWN learning notes
Attack and defense world - PWN learning notes
2022-07-07 12:23:00 【hcjtn】
PWN Learning notes
One , Stack introduction
Stack : Stack is a data structure in computer system , It stores data according to the principle of "first in, second out" , The data entered first is pushed to the bottom of the stack , The last data is at the top of the stack , When you need to read data, pop up the data from the top of the stack ( The last data is read by the first ), It's a special linear table . Stack operation commonly used is stack entry (PUSH), Out of the stack (POP), There are also commonly used marks for the top and bottom of the stack .
Into the stack (PUSH): Putting a data on the stack is called entering the stack (PUSH)
Out of the stack (POP): Take a data out of the stack and call it out of the stack (POP)
To the top of the stack : Common registers ESP,ESP It's a stack pointer register , It has a pointer in its memory , The pointer always points to the top of the top stack frame of the system stack .
At the bottom of the stack : Common registers EBP,EBP Is the base pointer register , It has a pointer in its memory , The pointer always points to the bottom of the top stack frame of the system stack .
Two , Stack overflow
1. Assembly level function call process :
Every call to every function , Each has its own stack frame , All kinds of information needed are maintained in this stack frame . register ebp Point to the bottom of the current stack frame ( High address ), register esp Point to the top of the current stack frame ( Low address ).

Stack overflow : The character length written by the user exceeds the character length of the variable itself, resulting in buffer overflow and rewriting of useful storage units , Write arbitrary data to these units , Generally, it will only lead to accidents such as program crash , But if you write carefully prepared data to these units , It can make our data replace the original code to execute the program , Cause the code we want to be executed .
3、 ... and , Common function

Four , file information
View file information :file
Check the file program :checksec
Arch File attribute
RELEO Bind dynamic symbols to reduce pairs GOT attack
Stack canary stack Protect
NX Unenforceable
PIE Address randomization
Production view header information :readelf-h
function : run
Select File :gdb
Look at the stack data :stack
Check the position of the string :search‘ character string ’
5、 ... and ,ROP
1. Definition :( Baidu )ROP Its full name is Return-oriented Programming( Return oriented programming ) It is a new attack based on code reuse technology , An attacker extracts instruction fragments from an existing library or executable , Build malicious code .ROP Attack the same Buffer overflow attack , Format string vulnerability attacks are different , It's a new way to attack , It uses code reuse technology .
2.ROP Attack prevention :ROP The attack program mainly uses the vulnerability of stack overflow to attack hijacking .
6、 ... and , Pile up
1. Definition :
The memory that needs to be allocated and released when data is running .( Variable size )
2.chunk( Structure of memory block )
chunk start:chunk From
size :chunk Size
memory:malloc Wait for the function to return to the user chunk Data pointer
3.glbic( Heap management )
- arena: Refers to the heap memory area native , Not structure .
- malloc_state: Manage the state of the heap , Information ,bins Linked list
4,bins
- Used to manage free memory blocks , Usually use the linked list structure 0 management
7、 ... and ,Glibc Heap
- Memory allocation is divided into : Dynamic allocation and static allocation .
- ptmalloc data structure
- malloc/free summary
8、 ... and , Formatted string
Concept : In the process of programming , Allow coders to pass special placeholders , The rule string that integrates or extracts the relevant corresponding information .
Format strings are divided into format input and format output .
Common formatting string constants :printf fprintf …
Format string vulnerability summary The user can read the memory by controlling the format string , Modify the memory value ( utilize %n Write to the specified memory address ), The application crashed .
Nine ,PLT and GOT surface
linux The build process : Preprocessing , compile , assembly , link
Dynamic compilation and static compilation
Dynamic compilation features : Avoid the waste of space , But the efficiency of dynamic compilation is lower than that of static compilation .
GOT surface : The real address is stored in the table , Seven fields need to be dynamically modified , It's writable
Library function :stdio,ctype, string etc.
Ten , Common instructions
- see file :file file name
- Check the documents :checksec --file= file name
- Run the file :./ file name
11、 ... and , exp Script
- from pwn import* Import function library ( Application pwn Tools )
- context() Easy to find mistakes
- def main () The main function
- hcj=remote(” “) long-range
- payload= Output data
- hcj.recvuntil(” “) Where to receive
- hcj. sendlineafter(" ",) Execute to which sentence to send a piece of data
- hcj.sendline(" ") Send a piece of data
- hcj.interactive() Accept
Add :gets Functions must be loopholes
Reference list :
https://blog.csdn.net/weixin_43847969/article/details/104390904?spm=1001.2014.3001.5506
https://blog.csdn.net/qq_41988448/article/details/103124339?spm=1001.2014.3001.5506
The rest of the information is from the Internet
边栏推荐
- [data clustering] realize data clustering analysis based on multiverse optimization DBSCAN with matlab code
- SwiftUI 教程之如何在 2 秒内实现自动滚动功能
- Introduction and application of smoothstep in unity: optimization of dissolution effect
- 开发一个小程序商城需要多少钱?
- SwiftUI Swift 内功之 Swift 中使用不透明类型的 5 个技巧
- Flet tutorial 17 basic introduction to card components (tutorial includes source code)
- Let digital manage inventory
- Up meta - Web3.0 world innovative meta universe financial agreement
- [shortest circuit] acwing1128 Messenger: Floyd shortest circuit
- Mise en œuvre du codage Huffman et du décodage avec interface graphique par MATLAB
猜你喜欢

Explore cloud database of cloud services together

Fleet tutorial 14 basic introduction to listtile (tutorial includes source code)

Problem: the string and characters are typed successively, and the results conflict

The road to success in R & D efficiency of 1000 person Internet companies

2022 8th "certification Cup" China University risk management and control ability challenge

【滤波跟踪】捷联惯导纯惯导解算matlab实现

Flet tutorial 17 basic introduction to card components (tutorial includes source code)

Epp+dis learning road (2) -- blink! twinkle!

SwiftUI 教程之如何在 2 秒内实现自动滚动功能

Hi3516全系统类型烧录教程
随机推荐
《通信软件开发与应用》课程结业报告
[shortest circuit] acwing 1127 Sweet butter (heap optimized dijsktra or SPFA)
What are the top-level domain names? How is it classified?
Tutorial on the principle and application of database system (011) -- relational database
顶级域名有哪些?是如何分类的?
MATLAB實現Huffman編碼譯碼含GUI界面
NGUI-UILabel
@What happens if bean and @component are used on the same class?
110. Network security penetration test - [privilege promotion 8] - [windows sqlserver xp_cmdshell stored procedure authorization]
Summed up 200 Classic machine learning interview questions (with reference answers)
Ask about the version of flinkcdc2.2.0, which supports concurrency. Does this concurrency mean Multiple Parallelism? Now I find that mysqlcdc is full
<No. 8> 1816. Truncate sentences (simple)
The function of adding @ before the path in C #
wallys/Qualcomm IPQ8072A networking SBC supports dual 10GbE, WiFi 6
Rationaldmis2022 array workpiece measurement
SwiftUI 4 新功能之掌握 WeatherKit 和 Swift Charts
110.网络安全渗透测试—[权限提升篇8]—[Windows SqlServer xp_cmdshell存储过程提权]
问题:先后键入字符串和字符,结果发生冲突
<No. 9> 1805. Number of different integers in the string (simple)
What is a LAN domain name? How to parse?