Sql注入的绕过waf方式
正所谓日站要快,姿势要帅
先说常见的sql注入的绕过方式
双写
例如 aanndd 1=1
大小写混合(sql语句是不区分大小写的)
这里不举例
当然有一种情况就是waf过滤了1=这个特殊字符
如果我们把1=1换成2=2或者2834=2834
只要是相等的值就行了
这里绕过和大小写混合是可以一起使用的
很多站点双写都可以绕过
And 和or 可以使用&&和||绕过
内联注入绕过order by
可以使用注释符/*和*/这里
例如?id=2%27%20order/*//*/+by%204%20–+
这里嵌套了url编码%就是url编码的标志
还有一些很特殊的绕过waf方式,之前我在一本书上见过emoji表情包绕过
具体的原理需要根据JavaScript脚本和php源码来的
如果在进攻的时候能通过抓包的方式得到源码那也是很不错的事情
Waf的实质意义是基于php和JavaScript的,这里不解释这两个语言的代码
这一篇相当于上一篇的尾巴
上一篇中我们说到了基于注入点不同有cookie注入
这里我附上攻防世界的一题wp
这个wp也是我自己写的,可以看着学习一下
下面是wp的内容
题目叫very_easy_sql
这一题我很早的时候就做出来了这一次开启场景为了复刻当时的解题思路和书写这个wp
题目场景如下
你没有内部用户所以你不能完整访问(这应该是大致意思,英语不好不能完整翻译)
我们可以很明显的看到这个unmame和passwd是一个登录界面
我们先抓包,看看返回什么
打开bp抓包结果如下
这里有一些值得我们注意的地方
Set-Cookie:this_is_your_cookie=deleted 代表如果我们输入的账号和密码是正确的是可以返回的
在源码的注解中有一个use.php(图片中没有展示出来)我们可以访问看看
结合我们翻译的那一段话应该是让我们尝试内部登录吧
所以我们先访问一下use.php
看起来是一个输入url就可以跳转的页面,这就很容易想到ssrf攻击
这里我引用一下相对官方的ssrf攻击的解释,因为我是野路子出来的解释的不是特别官方
为了验证猜想我们验证一下试试
测试成功,存在ssrf
我们打开visual studio使用Python脚本构造一下payload(这里解释一下,在ctf中很多时候都会用上Python脚本,payload指的是拿到flag也就是答案的关键url或者是一个关键的东西可以是misc类的密钥或者是web类的url这里很明显是url所以这里的构造payload就是构造url)
这个是输出结果
源码如下
(这里做一个解释,Python可以用记事本进行书写源码没有必要一定使用visual studio,这里只是我的一个相对个人的喜好罢了,值得我们注意的是这个Python源码适用于Python脚本的3.8版本,2.8和3.8是两个相对较为经典的版本这两个版本的语法都不一样所以不能通用)
我们访问一下这个url(用官方的语言说应该是用bp重新发包)
右边的是访问结果
这里也就很明显了,我们现在是已经登录进去了,可以看到右边的Set-Cookie值,我们可以知道不管我们在最开始的页面怎么登录都是无法登录的,只有通过ssrf在内部登录
这里也就很容易发现了,题目的提示和sql有关那么这一题的考点就是cookie注入也是sql注入的一个分支注入点也就是cookie
这里原本是需要测试注入点的闭合的,因为我还记得所以就直接说明了需要”)来闭合前面的语句至于如何测试注入点的闭合欢迎百度,下面我们构造时间盲注语句
语句源码如下
由于visual studio自带的Python脚本不是标准的3.8所以如果报错我们也可以在kali linux里面跑这个源码
但是使用kali linux不是必须的,跑出来是需要一定时间的,这里最好不用编译器去跑,直接放到环境比较合适
这里是用kali linux跑的中间可以看到出了一半的flag这是跑了一半的截图,所以最开始看到报错是正常的
这里是本题的flag,我没有粘贴出来flag,因为web类的题的flag都是变化的都不是固定的取决于你的场景,所以不要投机取巧嗷
编辑chnhonker-joker
Sql注入的绕过waf方式
正所谓日站要快,姿势要帅
先说常见的sql注入的绕过方式
双写
例如 aanndd 1=1
大小写混合(sql语句是不区分大小写的)
这里不举例
当然有一种情况就是waf过滤了1=这个特殊字符
如果我们把1=1换成2=2或者2834=2834
只要是相等的值就行了
这里绕过和大小写混合是可以一起使用的
很多站点双写都可以绕过
And 和or 可以使用&&和||绕过
内联注入绕过order by
可以使用注释符/*和*/这里
例如?id=2%27%20order/*//*/+by%204%20–+
这里嵌套了url编码%就是url编码的标志
还有一些很特殊的绕过waf方式,之前我在一本书上见过emoji表情包绕过
具体的原理需要根据JavaScript脚本和php源码来的
如果在进攻的时候能通过抓包的方式得到源码那也是很不错的事情
Waf的实质意义是基于php和JavaScript的,这里不解释这两个语言的代码
这一篇相当于上一篇的尾巴
上一篇中我们说到了基于注入点不同有cookie注入
这里我附上攻防世界的一题wp
这个wp也是我自己写的,可以看着学习一下
下面是wp的内容
题目叫very_easy_sql

这一题我很早的时候就做出来了这一次开启场景为了复刻当时的解题思路和书写这个wp
题目场景如下

你没有内部用户所以你不能完整访问(这应该是大致意思,英语不好不能完整翻译)
我们可以很明显的看到这个unmame和passwd是一个登录界面
我们先抓包,看看返回什么
打开bp抓包结果如下

这里有一些值得我们注意的地方
Set-Cookie:this_is_your_cookie=deleted 代表如果我们输入的账号和密码是正确的是可以返回的
在源码的注解中有一个use.php(图片中没有展示出来)我们可以访问看看
结合我们翻译的那一段话应该是让我们尝试内部登录吧
所以我们先访问一下use.php

看起来是一个输入url就可以跳转的页面,这就很容易想到ssrf攻击
这里我引用一下相对官方的ssrf攻击的解释,因为我是野路子出来的解释的不是特别官方

为了验证猜想我们验证一下试试

测试成功,存在ssrf
我们打开visual studio使用Python脚本构造一下payload(这里解释一下,在ctf中很多时候都会用上Python脚本,payload指的是拿到flag也就是答案的关键url或者是一个关键的东西可以是misc类的密钥或者是web类的url这里很明显是url所以这里的构造payload就是构造url)

这个是输出结果
源码如下

(这里做一个解释,Python可以用记事本进行书写源码没有必要一定使用visual studio,这里只是我的一个相对个人的喜好罢了,值得我们注意的是这个Python源码适用于Python脚本的3.8版本,2.8和3.8是两个相对较为经典的版本这两个版本的语法都不一样所以不能通用)
我们访问一下这个url(用官方的语言说应该是用bp重新发包)

右边的是访问结果
这里也就很明显了,我们现在是已经登录进去了,可以看到右边的Set-Cookie值,我们可以知道不管我们在最开始的页面怎么登录都是无法登录的,只有通过ssrf在内部登录
这里也就很容易发现了,题目的提示和sql有关那么这一题的考点就是cookie注入也是sql注入的一个分支注入点也就是cookie
这里原本是需要测试注入点的闭合的,因为我还记得所以就直接说明了需要”)来闭合前面的语句至于如何测试注入点的闭合欢迎百度,下面我们构造时间盲注语句
语句源码如下

由于visual studio自带的Python脚本不是标准的3.8所以如果报错我们也可以在kali linux里面跑这个源码
但是使用kali linux不是必须的,跑出来是需要一定时间的,这里最好不用编译器去跑,直接放到环境比较合适

这里是用kali linux跑的中间可以看到出了一半的flag这是跑了一半的截图,所以最开始看到报错是正常的
这里是本题的flag,我没有粘贴出来flag,因为web类的题的flag都是变化的都不是固定的取决于你的场景,所以不要投机取巧嗷
编辑chnhonker-joker




没有回复内容