这里要吐槽一点XCTF,之前翻题目时发现有道10分的,还是二次注入,还是0人做出,看了write up觉得还挺简单,就想混着写一下,结果0人做出的原因居然是环境打不开。然后在buuctf 平台找到了这道题,所以就试着写下write up。

目录

二次注入

二次注入的成因

二次注入常出现的地方

题解

思路

步骤


二次注入

二次注入的成因

  • 由于开发者为了防御sql注入,使网站对我们输入的恶意语句中的一些重要的关键字进行了转义,使恶意的sql注入无法执行(比如说将单引号转义,使其无法闭合)
  • 但是数据库存储我们的数据时,输入的恶意的语句又被还原成转义之前的语句(数据库又没有对存储的数据进行检查,默认存储的数据都是无害的)
  • 这时仍然没有被攻击,但是当我们数据库在进行查询时,如果调用了这条信息,就可能会产生sql注入。

所以要说明的是,二次注入的产生是需要以上一些特定的条件的。所以二次注入一般比较难发现

二次注入常出现的地方

  • 用户注册和登陆
  • 用户修改密码

题解

思路

接下来我们说的详细一点:
首先判断,为什么存在二次注入我们首先注册,登陆,都使用了sql语句发现无果,
然后我们进入Info页面,进行一个简单的sql语句 发现服务器并没有过滤掉关键字,只是将我们的
单引号用\转义。这个时候就是存在二次注入的一个必要条件

所以我们接下来就通过
1.注册恶意用户名
2.登陆, 在登陆过程中,肯定要将我们输入的数据和数据库进行比对,而在这个
查询数据库中的用户名进行比对的这个过程中,会执行我们插入数据库的用户名(也就是恶意sql注入语句)
所以使用下面4个恶意用户名,分别注册4个账号,进行登陆操作,一步一步爆出来1' union select database() #
1' union select group_concat(table_name) from information_schema.tables where table_schema='ctftraining' #
1' union select group_concat(column_name) from information_schema.columns where table_name='flag'#
1' union select flag from flag #下面给出一些步骤

步骤

注册 用户名为: 1' union select database() #  密码:111

点击Register ,注册成功

点击Register 后,到达Login页面,输入账户密码

用户名为: 1' union select database() #  密码:111

点击登陆,爆出了数据库。

接下来重复操作,注册-登陆-爆出信息,依次获取表名,字段名,字段值,最终得到flag。

表名

字段名

字段值(flag)

buuctf XCTF October 2019 Twice SQL Injection 二次注入原理+题解相关推荐

  1. XCTF BUG( 越权 修改forwarded头 文件上传) UNFINSH(二次注入 python脚本) 学习过程

    最近忙着入职和处理一些杂事,更新的确比较少了.不过在周末还是正好有空的,正好刷刷XCTF. 目录 XCTF BUG 注册账号 越权漏洞 文件上传 XCTF UFINISH XCTF BUG 首先进行常 ...

  2. SQL注入之二次注入(sql-lab第24关)

    什么是二次注入 二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被读取并进入到SQL查询语句所导致的注入.防御者可能在用户 输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插 ...

  3. SQL注入-二次注入和多语句注入

    二次注入 一.二次注入的定义 简单的说二次注入就是已经存储到数据库中的用户输入,在进行再一次读取的时候进去SQL查询语句中的注入. 二.二次注入的原理 第一步:插入恶意数据 第一次进行数据库插入数据的 ...

  4. sql 数据库前两列值乘_SQL注入原理和方法汇总

    本文首发于先知社区 前言: SQL注入是web安全中最常见的攻击方式,SQL注入有很多方法,但如果只知道payload,不知道原理,感觉也很难掌握,这次就总结一下我所遇到的SQL注入方法,原理分析+题 ...

  5. 编解码注入、二次注入、DNSlog盲注

    1.编解码注入 靶场 sqlilabs-Less21 登录后,使用bp抓包 分析源码: 发现,如果正确登录,就会设置一个cookie,并且使用base64编码 分析cookie: 发现此处可以进行co ...

  6. 一篇文章彻底学懂SQL注入(包含基础数据库句法、SQL注入原理以及所有常见SQL注入类型以及绕过手法)

    文章目录 前言 认识数据库 基本术语 select 语句 SQL where 子句 and & or 对数据进行过滤 order by 排序 insert into 向表中插入新记录 upda ...

  7. (17)网络安全:cookie注入、二次注入、DNSlog注入、中转注入、堆叠注入的原理及注入过程

    目录 cookie注入 sqli-lasb-master less-21 方法一:用burpsuite进行抓包后修改 方法二:安装火狐的cookie manager等插件进行修改cookie 第一步: ...

  8. DVWA学习(二)SQL Injection(Blind)

    SQL Injection(Blind),即SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是 ...

  9. DVWA学习(一)SQL Injection

    本文参考自https://www.jianshu.com/u/9dac23b54fba,根据自己的学习进度可能会有不同的地方,详细可以查看原文链接. SQL Injection,即SQL注入,是指攻击 ...

  10. Oracle Caused by: java.sql.SQLException: sql injection violation, syntax error: syntax error, expect

    参考:https://blog.csdn.net/qq_36326332/article/details/102938147 https://blog.csdn.net/fly_captain/art ...

最新文章

  1. mysql和redis统计网站活跃度,最代码网站用户私信列表采用mysql union查询优化为Redis查询的经验和相关代码片段分享...
  2. 如何静态添加toolbar到datagrid
  3. go defer性能测试
  4. flutter的按钮如何变为不可选中_Flutter 61: 图解基本 Button 按钮小结 (一)
  5. 在线CSV转SQL工具
  6. sql 2005中全文索引的使用
  7. python+HEG对mod021km数据进行几何校正、辐射定标
  8. 【VRP】基于matlab遗传算法求解多车辆路径规划问题【含Matlab源码 1249期】
  9. 产品研发管理和研发项目管理
  10. Python数学问题2:求100以内素数之和
  11. RNA 6. 差异基因表达之-- 火山图 (volcano)
  12. Codevs_P1907HDU_P1565 方格取数3(最大流)
  13. C++ 负数在内存中存储
  14. 如何解决tomcat启动时出现 Server Tomcat v9.0 Server at localhost failed to start.
  15. 虹科方案 | 虹科基于空口测试的新型5G毫米波测试方案
  16. win10升级nvidia、cuda、cudnn,非常简单
  17. Android微信浏览器标题,微信浏览器设置网页标题
  18. 排序算法,最全的10大排序算法详解(Sort Algorithm)
  19. jmeter-阶梯式性能指标监听
  20. Kettle源码本地编译运行

热门文章

  1. ShaderForge-霓虹漩涡
  2. Revel模板引擎Template基本语法
  3. 记一次完整的npm包开发 --- 发布过程
  4. Vue项目中完成谷歌统计和百度统计功能
  5. MATLAB 基础知识 数据类型 分组数组 创建分类数组
  6. 云原生安全构筑下一代企业安全架构
  7. 易到CEO巩振兵被曝本周已离职 其称“在开会”
  8. 利用FME进行火星、百度坐标反算及误差分析
  9. zbbix服务器搭建_Linux系统搭建Zabbix监控服务器
  10. Gmail,OutLook邮箱基于Oauth2.0协议授权登录邮箱客户端