2021 虎符杯hate num 注入题
前言
今天遇到个有意思的SQL盲注,花了不少功夫,也学到了新姿势,遂记录下来以备后续碰到相同场景使用。
题目
这是2021 虎符杯的一道web题,有一个目标站点且附带了源码。
源码内容包括:
主要逻辑在login.php 与config.php,删去多余代码,主要功能在登陆上。
前端登录表单会发送给login.php处理:
然后所有的post参数会交给config.php 中的array_waf去做处理.
array_waf 是一个递归检测的waf,检测是否包含sql_waf 和 num_waf 在内的规则,符合规则直接退出。
经过检测后会进入config.php 中的login函数进行数据库查询。
可以看到login函数直接将参数拼接到了sql语句上,很明显的sql注入,且返回只有error、success、fail状态。 success的状态下会进入home.php 拿到flag。
拿到题目,逻辑比较清晰,绕过waf进行sql注入,按照原始的登陆逻辑,我们需要知道正确的username、password以及code值,通过sql注入绕过用户名及密码检测逻辑及知道code值。
解题
绕过账密检测
根据这个sql拼接的方式绕过账密检测还是很简单的,因为sql_waf中限制'
,所以下面的payload就可以绕过账密检测。
绕过code检测
因为在login逻辑中有对code值进行单独校验的部分,所以我们还需要利用上面的sql注入注出code的具体值。因为返回只有login fail、error两个结果,所以是个布尔盲注。
但盲注的大部分关键词都被waf限制,所以关键点就是绕waf。
sql_waf
重点来看下sql_waf, 因为返回的内容有限,所以只能使用布尔盲注,而盲注通常会用到几个关键关键字:字符串截取类(substr、left、right、mid)、条件判断类(if)、语句分割类(空格、/**/)、逻辑运算类(and、or)。
一个盲注的payload: if(substr(database(),1,1)="t",1,0);
但很遗憾waf里面基本这些常用的都被禁用了,所以只能分别寻求替代。
字符串截取类
禁用:substr、left、right、mid
绕过: like、rlike、inst
除开上面这些其实还可以使用 like、rlike、instr等
其中like与rlike的区别是 rlike支持正则表达式而like只支持如%,_等有限的通配符,like可以近似于"="
语句分割
禁用: 空格、\r(%0d)、\n(%0a)、\t(%09)\、/**/
语句之间分割常常使用空格
绕过: %a0( )、%0b(垂直制表符)、%0c(换页符)
逻辑运算
禁用: and、or、=、>、<、regexp
绕过: &&、||、 like、greatest、least
条件判断
禁用: 因为禁用了,
,所以if 语句没发使用
绕过: exp
EXP函数(本篇文章精髓)
这里重点其实就是exp函数,在sql注入里面exp函数一般被用做报错注入(mysql<5.5.53)里面输出报错信息。
如:
利用的是Double 溢出,exp(x) 含义为ex ,当x>709时就超过了double的取值范围造成报错。:
而例子中把字查询按位取反就能得到远大于709的值,报错就会把子查询内容显出出来。
其实除了能用在报错注入以外,利用exp在参数大于709时会报错的特性可以用来构造条件判断语句。
在上面sql语句中 expr 若为 true 等价于0 则 语句就会报错(exp(710)),若expr 为false 等价于0 则语句正常执行。
code 注入
有了前面所有的绕过,就能构造语句进行code值注入了。
1. 判断code 长度:
2. 猜解code字段具体值
因为'
被过滤,所以rlike后面不能出现字符串,需要 将正则表达式 ^xxx 转换成十六进制。
3. 绕过num_waf
这里面还有一个坑,num_waf 有个判断十六进制位数不能超过9位,既字符串不能超过4位,所以在包含正则^
以外的字符串超过3位时需要 不断做替换,用3位字符串去匹配下一位。
逻辑很简单,需要花点心思去编码,
总结
如果有waf 限制了if 的使用,特殊情况下可以考虑通过exp函数来绕过。
代码
公众号
欢迎大家关注我的公众号,这里有干货满满的硬核安全知识,和我一起学起来吧!
__EOF__

本文链接:https://www.cnblogs.com/9eek/p/16070852.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】