AWCTF萌新赛web题WP
1、pacman
一个游戏,看到题目直接看网页源代码
因为不能邮右键,所以直接在view-source:加网址
view-source:http://49.232.149.138:11521/pacman/
看到两个js文件,都打开
在index.js中发现flag
base64解密
然后将解密出来的那个js代码放入控制台中,然后能出来flag
2、real_ez
这题比较简单,主要靠百度
可以发现title上就有flag
可以直接去腾讯云查看
https://buy.cloud.tencent.com/price/eip#E8AEA1E8B4B9E591A8E69C9F
然后突然发现title又变了
直接在对话框中输入e6b0b4e6b0b4e5a4a7e5a4a7e59b9be5a484e5afbbe689bee5b9b8e5ad98e880857a7863
然后回车
扫一次啊二维码
在公众号上发一个flag,然后机会出来最后的flag片段
串接起来提交即可
3、web2
这个题考察了php伪协议
<?php
$flag = "flag{***}";
highlight_string(str_replace($flag, "flag{***}", file_get_contents(__FILE__)));
extract($_GET);
if(isset($file) && file_get_contents($file) == "hello hebust") {
print($flag);
}
首先先分析下一些php函数的意思
extract() 函数:
extract() 函数从数组中将变量导入到当前的符号表。
extract($_GET);把客户端中get请求的变量名取出来
file_get_contents() 函数把整个文件读入一个字符串中。
file_get_contents()这个函数是可以绕过的
使用php://input伪协议绕过
① 将要GET的参数?xxx=php://input
② 用post方法传入想要file_get_contents()函数返回的值
用data://伪协议绕过
将url改为:?xxx=data://text/plain;base64,想要file_get_contents()函数返回的值的base64编码
或者将url改为:?xxx=data:text/plain,(url编码的内容)
最终payload
http://49.232.149.138:11521/web2.php?file=data://text/plain;base64,aGVsbG8gaGVidXN0
flag{75b478b4-d5c1-47d2-9716-5dee9b312d72}
4、local
这个题目比较简单
F12发现提示
输入密码后:
需要在本地才能访问,本地就是127.0.0.1
需要改下包即可,这里用hackbar
5、web0
<?php
$flag = 'flag{***}';
highlight_string(str_replace($flag, "flag{***}", file_get_contents(__FILE__)));
$_GET['id'] = urldecode($_GET['id']);
if (isset($_GET['uname']) and isset($_POST['passwd'])) {
if ($_GET['uname'] == $_POST['passwd'])
print 'passwd can not be uname.';
else if (sha1($_GET['uname']) === sha1($_POST['passwd'])&($_GET['id']=='me'))
die('Flag: '.$flag);
else
print 'sorry!';
}
这一题的关键主要在于
sha1($_GET['uname']) === sha1($_POST['passwd']
这个的比较,因为===是不能比较数组的所以可以使用数组绕过
最终的payload:
6、web1
<?php
$flag = "flag{***}";
highlight_string(str_replace($flag, "flag{***}", file_get_contents(__FILE__)));
function encode($str){
$_o=strrev($str);
for($_0=0;$_0<strlen($_o);$_0++){
$_c=substr($_o,$_0,1);
$__=ord($_c)-1;
$_c=chr($__);
$_=$_.$_c;
}
return (base64_encode($_));
}
print(encode($flag));
fDVjMGRlMC9kNDRkMDg3ZTQwMmRhNGU4NTIwMTAwNDNkemZga2U=
写一个逆向算法即可
<?php
$str="fDVjMGRlMC9kNDRkMDg3ZTQwMmRhNGU4NTIwMTAwNDNkemZga2U=";
$_="";
$_o = base64_decode($str);
for($_0=0;$_0<strlen($_o);$_0++){
$_c=substr($_o,$_0,1);
$__=ord($_c)+1;
$_c=chr($__);
$_=$_.$_c;
}
$_=strrev($_);
echo $_;
?>
上一篇: C语言文件流的饭卡管理系统
下一篇: 9_Linux 基本命令