CTFweb笔记
本地靶机里的题目笔记
如果地址不可访问请联系我开启映射
web1
右击查看页面源代码发现flag
web2
打开发现index.php被重定向到index.html
打开Burp抓包
得到flag
web3
只允许通过本地地址进行访问
使用Burp添加
x-forwarded-for: 127.0.0.1
伪造ip地址
提示不是管理员
尝试把Cookie的isadmin的0改为1
得到flag
web4
御剑扫一下后台
发现.bak文件
GET传参ver等于php版本号得flag
php版本号可以通过查看响应头获得
在url后面加上?ver=5.4.41
得到flag
web5
看一下源代码
提示password.txt 查看一下这个文件
复制这个字典用Burp爆破看看
得到密码
在网页输入密码发现最多只能输入五位
按F12调出开发者工具在查看器修改maxlength=”5”删除5即可解除输入限制
输入密码提示这里没有flag
查看源代码没发现什么提示,查看响应头发现一串Cookie数值
base64解码得到
访问这个页面
输入信息留言
提示未登录
抓包看看传输的数据
修改Cookie的lsLogin为1
留言成功,但提示没有权限访问
抓包修改userlevel字段的guest更改为root
以root帐户留言成功
查看响应头
得到flag
web6
代码审计
通过GET传参md5的数值
传参的数值不能等于240610708并且传参的md5值要与240610708的md5值相等
PHP接收0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0。所以我们只需要输入一个数字和字符串进行MD5加密之后都为0e的即可得出答案。
240610708的md5值是0e开头的所以传参一个md5值0e开头的数值即可绕过
0e开头的md5和原值:
QNKCDZO
0e830400451993494058024219903391
240610708
0e462097431906509019562988736854
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
web7
PHP代码审计
要求解密加密的代码
解密脚本如下
<?php
$s='=pJovuTsWOUrtIJZtcKZ2OJMzEJZyMTLdIas';
function unencode($str){
$o='';
$a=base64_decode(strrev(str_rot13($str)));
echo $a."\n";
//$a=str_rot13(strrev(base64_decode($str)));
//echo strlen($a);
for ($i=0;$i<strlen($a);$i++){
$bbb = substr($a,$i,1);
//echo $bbb.'\n';
$ddd=ord($bbb)-1;
$l=chr($ddd);
//echo $l.'\n';
$o=$o.$l;
}
echo strrev($o);
}
unencode($s);
?>
得到flag
web8
查看源代码
发现js文件
美化js源代码
美化后发现unescape内有代码
美化unescaoe 内的代码
将js的判断语句和数值放在控制台运行得出账号密码
继续美化得到的unescaoe内的代码里的unescape里的代码
base64解码得到
访问解码得到的页面
访问Ch3ck_Au7h.php页面
传入之前得到的账号密码
得到flag
web9
查找QQ然后访问空间要求输入生日,输入提示的生日
空间说说就一条
试试这个密码
输入密码发现无法输入,F12查看源代码
删掉readonly=””就可以输入了
得到flag
web10
查看页面源代码
提示LFI本地文件包含
在提交页面框中输入
php://filter/read=convert.base64-encode/resource=index.php
利用LFI来查看base64加密的源码
base64解码
得到flag
web11
信息收集时发现.swp文件泄露。直接访问
打开文件代码审计一下
<!--
function clear($string){
//这是过滤函数哦~
}
$userInfo = @unserialize($_REQUEST['userInfo']);
$query = 'SELECT * FROM users WHERE id = \''.clear($userInfo['id']).'\' AND password = \''.clear($userInfo['pass']).'\';';
$result = mysql_query($query);
if(!$result || mysql_num_rows($result) < 1){
die('Invalid password!');
}
$row = mysql_fetch_assoc($result);
foreach($row as $key => $value){
$userInfo[$key] = $value;
}
$oldPass = @$_REQUEST['oldPass'];
$newPass = @$_REQUEST['newPass'];
if($oldPass == $userInfo['password']){
$userInfo['password'] = $newPass;
$query = 'UPDATE users SET pass = \''.clear($newPass).'\' WHERE id = \''.clear($userInfo['id']).'\';';
mysql_query($query);
echo 'Password Changed Success.<br>';
}
else{
echo 'Invalid old password entered.';
}
-->
反序列化userInfo这个传参变量通过userInfo查询变量里的id和pass
查看页面的cookies可以得到id和加密过的pass
将pass数值base64解密在md5解密得出未加密的密码20151231
构造序列化userInfo
得到payload
a:2:{s:2:"id";s:1:"3";s:4:"pass";s:8:"20151231";}
传递oldPass和newPass使oldPass和pass相等
构造oldPass=20151231&newPass=123456
最终payload
a:2:{s:2:"id";s:1:"3";s:4:"pass";s:8:"20151231";}&oldPass=20151231&newpass=123456
得到flag
web12
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1012482327@qq.com
文章标题:CTFweb笔记
本文作者:亖 玖
发布时间:2020-11-21, 08:48:43
最后更新:2022-11-02, 15:48:59
原始链接:https://sijiu.ren.com/2020/11/21/CTFweb%E7%AC%94%E8%AE%B0/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。