MySQL 手工注入之常见字符串函数


在手工注入中常常需要一次查询多个结果,这里字符串函数就派上用场了,参考了lcamry大神的文章,然后在此基础上记录了一些自己的想法。

手工注入字符串常用函数三个老朋友:

concat()
group_concat()
concat_ws()

concat

基本格式

CONCAT(str1,str2)

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。可以有一个或多个参数。

使用案例

参数中有NULL

mysql> SELECT CONCAT(id,',',NULL,',',password) AS users FROM users LIMIT 1,1;
+-------+
| users |
+-------+
| NULL  |
+-------+
1 row in set (0.00 sec)

使用LIMIT来控制结果数量

mysql> SELECT CONCAT(id,',',username,',',password) AS users FROM users;          
+-----------------------+                                                        
| users                 |                                                        
+-----------------------+                                                        
| 1,Dumb,Dumb           |                                                        
| 2,Angelina,I-kill-you |                                                        
| 3,Dummy,p@ssword      |                                                        
| 4,secure,crappy       |                                                        
| 5,stupid,stupidity    |                                                        
| 6,superman,genious    |                                                        
| 7,batman,mob!le       |                                                        
| 8,admin,admin         |                                                        
| 9,admin1,admin1       |                                                        
| 10,admin2,admin2      |                                                        
| 11,admin3,admin3      |                                                        
| 12,dhakkan,dumbo      |                                                        
| 14,admin4,admin4      |                                                        
+-----------------------+                                                        
13 rows in set (0.00 sec)                                                        

mysql> SELECT CONCAT(id,',',username,',',password) AS users FROM users LIMIT 1;  
+-------------+                                                                  
| users       |                                                                  
+-------------+                                                                  
| 1,Dumb,Dumb |                                                                  
+-------------+                                                                  
1 row in set (0.00 sec)                                                          

mysql> SELECT CONCAT(id,',',username,',',password) AS users FROM users LIMIT 2;  
+-----------------------+                                                        
| users                 |                                                        
+-----------------------+                                                        
| 1,Dumb,Dumb           |                                                        
| 2,Angelina,I-kill-you |                                                        
+-----------------------+                                                        
2 rows in set (0.00 sec)                                                         
mysql> SELECT CONCAT(id,',',username,',',password) AS users FROM users LIMIT 0,1;
+-------------+                                                                  
| users       |                                                                  
+-------------+                                                                  
| 1,Dumb,Dumb |                                                                  
+-------------+                                                                  
1 row in set (0.00 sec)                                                          

mysql> SELECT CONCAT(id,',',username,',',password) AS users FROM users LIMIT 0,2;
+-----------------------+                                                        
| users                 |                                                        
+-----------------------+                                                        
| 1,Dumb,Dumb           |                                                        
| 2,Angelina,I-kill-you |                                                        
+-----------------------+                                                        
2 rows in set (0.00 sec)                                                         

mysql> SELECT CONCAT(id,',',username,',',password) AS users FROM users LIMIT 1,1;
+-----------------------+                                                        
| users                 |                                                        
+-----------------------+                                                        
| 2,Angelina,I-kill-you |                                                        
+-----------------------+                                                        
1 row in set (0.00 sec)                                                      

CONCAT_WS

CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。感觉比CONCAT更方便了呀,这样参数多的话就不用手动的去添加分隔符了。

基本格式

CONCAT_WS(separator,str1,str2,…)

Separator为字符之间的分隔符

使用案例

mysql> SELECT CONCAT_WS('~',id,username,password) AS users FROM users LIMIT 0,2;
+-----------------------+                                                       
| users                 |                                                       
+-----------------------+                                                       
| 1~Dumb~Dumb           |                                                       
| 2~Angelina~I-kill-you |                                                       
+-----------------------+                                                       
2 rows in set (0.00 sec)                                                        

GROUP_CONCAT

GROUP_CONCAT函数返回一个字符串结果,默认查询所有结果。该结果由分组中的值连接组合而成。

基本格式

GROUP_CONCAT(str1,str2,…)

使用案例

mysql> SELECT GROUP_CONCAT(id,username,password) AS users FROM users;                                                                                                                               
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| users                                                                                                                                                                                            |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 1DumbDumb,2AngelinaI-kill-you,3Dummyp@ssword,4securecrappy,5stupidstupidity,6supermangenious,7batmanmob!le,8adminadmin,9admin1admin1,10admin2admin2,11admin3admin3,12dhakkandumbo,14admin4admin4 |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)                                                                                                                                                                             

文章作者: 国光
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 国光 !
 上一篇
MySQL 手工注入之基本步骤 MySQL 手工注入之基本步骤
手工注入虽然原理是一样的,但是在具体手工注入的过程中有好多各种各样的细节不太一样,特此记录汇总下,以方便以后的学习查询。 MySQL手工注入的基本步骤以及一些技巧的记录。 步骤注释或者闭合语句首先看下一个基本的SQL语句查询源码: $sq
2018-01-15
下一篇 
MISC-MISCall No cON Name CTF Quals 2014 MISC-MISCall No cON Name CTF Quals 2014
No cON Name CTF Quals 2014年的一道CTF安全杂项题-MISCall的Writeup。 赛题概览NoConName 2014 Quals: MISCall 环境 Linux Python 考察点 Linux 基
2018-01-12
  目录