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)
点评
这篇文章略水了点,23333,实际上手工注入注入多了就自然而然熟悉了,遇到忘记的现查也是可以的,没有必要在这种语法上面消耗太多时间。
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信
|
支付宝
|
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光
评论