[RCTF2015]EasySQL
2021/10/4 19:11:11
本文主要是介绍[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#’,从而造成注入。解决问题的关键就是,在哪里可以回显我们输入的数据。
进入正题
这是这个网站的全部功能
注册页面禁止了一些字符,看源码是过滤了这些字符(太难受了…burpsuite突然坏了…)
#(\s)|(/\*.*\*/)|file|insert|<|and|floor|ord|char|ascii|mid|left|right|hex|sleep|benchmark|substr|@|`|delete|like#i
然后尝试注入,这个真的就没办法,就是一直找可以回显的地方,最后知道是在修改密码那里采用报错注入…
我自己在本地模拟了一下,我输入用户名为:
数据库里面的数据如图所示
我把输出语句打印了出来,为了更方便理解
可以看到在登录的时候我们输入的’被转义,所以并没有执行我们预期的命令
哦对了,忘记了,这道题目比较坑的一点是它用的是“双引号闭合…
我们把前面的命令该为双引号闭合,然后changepwd.php那个页面里面,修改密码
知道了回显点在哪里就可以开始做题目了
(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)
后记
怎么说呢,就是感觉自己还是没有耐心,再加之还是不熟练…
以后的路还长,一定要坚持,坚持可能有结果,但是不坚持一定会输
这篇关于[RCTF2015]EasySQL的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12深入理解 ECMAScript 2024 新特性:Map.groupBy() 分组操作
- 2025-01-11国产医疗级心电ECG采集处理模块
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势