Skip to content

Commit 65ba654

Browse files
authored
Update SQL注入笔记.md
1 parent a577b20 commit 65ba654

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

SQL注入笔记/SQL注入笔记.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ SELECT * FROM nowcoder;
144144

145145
假设有这样一个场景:A知道一个秘密,但是碍于各种原因,不能直接告诉B,此时B要求A将秘密告诉C,B再从C处获得秘密即可。这便是OOB(Out-Of-Band),意为请求外带,在渗透测试中,若目标服务器上A的关键数据无法直接回显,安全人员可以让安全服务器主动对另一台受控制的服务器C发出请求,并将关键数据写在请求中(通常是URL中),安全人员通过查看C上的访问记录,便可从URL中获取关键数据了。
146146

147-
![图片说明](.\SQL注入笔记.assets\3505471_1575266075435_1F22147D22EDE8447F757A4279548A20.png)
147+
![图片说明](./SQL注入笔记.assets/3505471_1575266075435_1F22147D22EDE8447F757A4279548A20.png)
148148

149149

150150

@@ -279,7 +279,7 @@ mysql_query("SELECT title FROM passage WHERE uname = '$uname'");
279279

280280
此时第4行中$uname的值为刚刚存入的' or updatexml(1,concat(0x7e,(user())),0) or ',那个具有闭合功能的单引号又回来了!
281281

282-
![图片说明](.\SQL注入笔记.assets\3505471_1575263736543_AAE222732061C0009D4ED5B74AC398A3.png)
282+
![图片说明](./SQL注入笔记.assets/3505471_1575263736543_AAE222732061C0009D4ED5B74AC398A3.png)
283283

284284
于是最后执行:
285285

@@ -306,7 +306,7 @@ mysql_query("SELECT * FROM nowcoder WHERE id = $id");
306306

307307
黑客在地址栏传入`%df%27`,其中`%27``'`的URL编码。当addslashes侦测到引号时,进行转义,添加一个反斜杠(`%5c`),变为`%df%5c%27`。而Mysql在解析SQL语句时使用了多字节的GBK编码,当首个字节(高位)的ASCII码大于128时,就被认为是一个汉字,每个汉字占两字节,而`%df`正好符合这一要求。于是`%df%5c%27`被解析为`%df%5c`%27,即`運'`,成功吃掉转义引号的反斜杠,造成单引号逃逸。
308308

309-
![图片说明](.\SQL注入笔记.assets\3505471_1575264948123_3450E4A84AAF66E6CB5143139BD82168.jpeg)
309+
![图片说明](./SQL注入笔记.assets/3505471_1575264948123_3450E4A84AAF66E6CB5143139BD82168.jpeg)
310310

311311
那么,将Mysql连接层编码设为UTF-8就可以完全避免宽字节注入了吗?看下面这个例子:
312312

@@ -318,7 +318,7 @@ mysql_query("SELECT * FROM nowcoder WHERE id = $id");
318318

319319
这里Mysql连接层使用了UTF-8编码,为了避免乱码,使用iconv函数将用户提交的GBK字符经addslashes过滤后,先转为UTF-8,再拼入SQL语句,此时黑客只需在地址栏传入`%e5%5c%27`,即可再次使单引号逃逸,过成如下:
320320

321-
![图片说明](.\SQL注入笔记.assets\3505471_1575265375490_41857CDE5786D99304E51B7EAA7E72D9.jpeg)
321+
![图片说明](./SQL注入笔记.assets/3505471_1575265375490_41857CDE5786D99304E51B7EAA7E72D9.jpeg)
322322

323323
可以理解为只要在低位中含有`%c5`的编码中,都是可以进行注入的。
324324

0 commit comments

Comments
 (0)