第一题wp:numsql

本帖子用来记录我在ctf道路上的题目,也算是为自己写了个wp,以便回头去复习知识点。

首先进去网站后出现如下图所示,可以得是运用GET的方式来执行注入。

第一步:判断注入的类型,一般分为字符型和数字型

这边我用的是通过 and 1=1 和 and 1=2来确定类型

发现在and 1=2 时网页无回显,由此可以判断出来这属于数字型注入

第二步:通过order by语句来查询数据库表的列数,这边运用这个语句在我的理解下,就是为接下来的union select 查找注入点提供一个前提条件,不然会导致语句报错


在1的时候有回显,接下来就是在order by 后的数字不断的去加1,直到页面无回显

这边省略2和3的查询 ,结果都是正常的,在输入4后发现页面无回显,说明了数据库表的列数为3

第三步:通过union select 语句来查询注入点位置,由于order by查询出来为3列,故:

 如图,页面回显为id=111,所以我们得知注入点为第一列

第四步:通过database()语句获取数据库的名字,刚刚我们找到了注入点,所以要在注入点上进行database()的注入

通过这条语句,我们得知这个数据库的名字是ctf

第五步:运用得知的库名来通过group_concat(table_name)获取其中的表名

这个group by的含义我的理解就是调取所有数据的意思,如果不加的话会导致显示不全,接下来我们要在刚刚查询出来的库名ctf中,获取这个库中的表的名字,如下图所示

这个table_schema含义是数据库的名称,table_name是表名的意思

这句话的意思就是在111这个注入点上输出,我要调取的ctf数据库中的所有表名

所以我们可以看到这个表名就是ctfer

第六步:获取在ctfer表名内的flag

这个原理跟第五步差不多,这里其实不需要加group concat是因为flag的值就一个,因为做的时候还没了解到这么多的内容

就是在ctfer这个表中去查找flag,最后得到了这个答案

由于刚刚涉入ctfweb不久,文章必然会出现许多不严谨和不合理的地方,希望各位大佬见谅,也可以指出来,在下次的时候会加以改进

拓展:这边发些我经常会遇到的语句吧

这边也是找到了 group_concat的具体解释,贴在下方

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值