web_给他/假赛生官方writeup

admin 2022年1月5日23:10:01CTF专场评论11 views1844字阅读6分8秒阅读模式

>

>

web_给他/假赛生官方writeup

guoke

给他
首先就是一个登陆框。没啥东西。然而并没有告诉我们参数
这里就有两种方法。一种。看下面sql语句。盲猜name和pass为列名
第二种。也是预期的解法。.git源码泄露。当你实在没思路的时候。不妨找找其他信息
web_给他/假赛生官方writeup
用githack获得源码
web_给他/假赛生官方writeup
在pwn和web中。都存在格式化字符串漏洞。主要是因为代码不严谨

<?php
$pass=sprintf("and pass='%s'",addslashes($_GET['pass']));
$sql=sprintf("select * from user where name='%s' $pass",addslashes($_GET['name']));
?>

善用搜索引擎。sprintf函数。是将字符串格式化写入
sprintf('and pass=%s','test')
%s代表此处格式为string类型的值。处理后变成and pass=test
如果我们输入%1$c,那么处理时。会将%1$c认为是字符串。然后变成and pass=%1$c
此时带入第二个spritnf中。格式化时就会变成select * from user where name=%s and pass=%1$c
根据格式化字符串的语法。%1表示第一个参数。也就是name对应的值。$c表示单个字符。会读取第一个参数的值并将其转换为字符类型
name输入39。pass输入%1$c
还有其他payload。如%1$'。转义后变成%1$\,将第一个参数替换为\类型。由于不存在这个类型。所以会替换空。剩下的单引号就逃逸了
最后结果如下
web_给他/假赛生官方writeup
进入下一关。右键源代码中有hint。flag在/flag
由于部署环境。没有禁用mysql的load_file。大佬们直接就load_file盲注了。。。。。佩服佩服
预期解:
查看cookie。发现一个fiel参数。有一串16进制值。
解压得到flag.txt。猜测存在任意文件读取
web_给他/假赛生官方writeup
修改cookie。读取/flag。提示not has flag
读取文件的内容中。不能包含flag。那么我们可以通过php伪协议base64加密回显结果。
web_给他/假赛生官方writeup
提示not base64。
伪协议还有rot13.可以用。
最终payload:
php://filter/read=string.rot13/resource=/flag
16进制后替换得到flag。然后rot13解密下

假赛生
这题其实考的是二次注入。可以注册和登陆。登陆后会将用户名带入查询。
需要成为admin。进入下一关
预期解:
二次注入。写入session内容为name|s:5:"admin";。然后替换session就能成为admin用户。
因为session实质上是将数据序列化后存入session_对应sessionID的。
比如/tmp/sess_2bevmvtacut18mlo3de90j6hha内容是name|s:5:"admin";
那么sessid为2bevmvtacut18mlo3de90j6hha的用户就是admin。
payload:
" union select unhex('6e616d657c733a353a2261646d696e223b') into outfile '/tmp/sess_2bevmvtacut18mlo3de90j6hha'#
然后替换sessionid登陆即可。
然而。在写入session时。是以mysql用户写入的。而session文件必须和中间件(apache)是同一用户。当时部署环境时。修改所属用户的脚本没写好。所以没部署成功就上线了。
非预期1:
群主直接在数据库中。插入了admin用户的数据。导致二次注入可以拿到admin密码。从而登陆
非预期2:
由于源码中只将输入小写。判断admin。并没有去除空格。而插入数据库时。mysql会自动忽略空格。所以注册admin空格。可以绕过检测。并成功插入数据库。从而登陆
对于下一关。一个正则。。
web_给他/假赛生官方writeup
只要输入不是字母数字就OK。
那就随便输了。比如%///。甚至传一个空参就可以拿flag
web_给他/假赛生官方writeup
此题是出题史上。非预期中的非预期
各位大佬别打脸。手下留情


yuchoxuuan

guoke " union select unhex(‘6e616d657c733a353a2261646d696e223b’) into outfile ‘/tmp/sess_2bevmvtacut18mlo3de90j6hha

大佬大佬,如果我能想到这一步的话,我一定会想着写个shell进去啊~~~


特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月5日23:10:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  web_给他/假赛生官方writeup http://cn-sec.com/archives/720004.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: