感觉自己好菜,只会做几个题目,而且打打停停,还要应付各种考试,忙不过来,以后还是要更加努力学习啊。。还是先记录一下自己的做题过程,慢慢进步,跟不上大佬们的步伐啊emmm。。
打开文件发现是一堆AB立刻想到是培根密码,直接培根解密得到flag,注意最后提交的是大写
发现一段base64
编码。不断base64解码,注意期间还要URL编码,这就有点麻烦了,当你base64解码不行的时候,尝试一下AES解密
,这里key为空,解密网址 http://tool.oschina.net/encrypt/
得到下面的东西
答案就是后面这句但已加密
缽娑遠呐者若奢顛悉呐集梵提梵蒙夢怯倒耶哆般究有栗
这里有点脑洞了,我之前不知道有这种东西,叫与佛论禅
解密网址 http://www.keyfc.net/bbs/tools/tudoucode.aspx
解密后得到flag
于是立即下载使用该软件打开这张图片,发现下面有多个图层,是一张二维码,直接拼接扫描即可
直接十六进制解码即可
根据题目应该是凯撒密码位移13位也就是rot13,然后就是脑洞题目了,键盘密码,每一位都是对应键盘的下一行,直接出来flag
这个题目也很厉害,我弄了很久,但是里面也有与佛论禅。。。。
先是在HXD里面找到了office的踪迹,于是我手动提取出来,可能别的大佬有更好的方法
然后打开
又是与佛论禅,出题人是有多喜欢。。。
解出来发现是一堆16进制,房间converter里面解码
得到一堆base64,再解一下就是base32,再解一下16进制,就是这样一直解下去就好
这道题目考了一个zip包的伪加密,然后直接凯撒解密就好。。。很简单
这题很简单,直接改xff为127.0.0.1即可
打开发现一段类似base64的东西,首先要把这东西url编码之后再解base64,发现一段以+开头以-结尾的编码,utf7编码,给个解码网址 http://toolswebtop.com/text/process/decode/utf-7
得到
把/%nsfocusXSStest%/
提交到文本框里就可以得到flag了
这个题目考的是文件包含漏洞,利用f参数读取,根据f参数猜测后台为include(‘文件名’.’php’) ,尝试用伪协议把源码读出来,但题目说了要绕过,肯定不简单
这里我们用大写去绕过,读取index.php
http://118.190.152.202:8008/index.php?f=PHP://filter/read=convert.base64-encode/resource=index&id=2
得到一串base64,解码之后得到flag
改一下Client-ip:127.0.0.1 发包就得到flag
这个题是代码审计题目,源码在index.php.txt 里面
include "flag.php";
if ($_SERVER["REQUEST_METHOD"] != "POST")
die("flag is here");
if (!isset($_POST["flag"]) )
die($_403);
foreach ($_GET as $k => $v){
$$k = $$v;
}
foreach ($_POST as $k => $v){
$$k = $v;
}
if ( $_POST["flag"] !== $flag )
die($_403);
echo "flag: ". $flag . "\n";
die($_200);
?>
一开始这一题还是懵,不知道flag究竟放在哪个变量里面,经过提示是在$flag里面,有确定的目标就很好做了
发现代码里面有两个$
,利用了变量覆盖把flag参数里面的内容改掉,然后最后利用die函数把flag里面的内容打印出来
我们得先获得$flag
变量里面的内容,我们可以利用get的变量覆盖把里面的内容赋值到$_200
这一个变量里面,这样就可以充分利用die
这一个函数了
然后下面紧接着一个post的变量覆盖还有一个post的判断,但是此时我们并不知道$flag
里面的内容,我们只能利用变量覆盖改变$flag
里面的内容,这也说明了$flag
这个变量是可控的。。我们可以随意的修改并且绕过判断,这样我们就可以得到flag了
payload:
get数据
http://118.190.152.202:8009?_200=flag
post数据
flag=1
首先进去第一关是MD5弱类型比较,直接找一个QNKCDZO代入就行
header("content-type:text/html;charset=utf-8");
if(isset($_POST['username'])&isset($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];
}
else{
$username="hello";
$password="hello";
}
if(md5($password) == 0){
echo "xxxxx";
}
show_source(__FILE__);
?>
第二关发现两个$,于是尝试一波GLOBALS
全局变量,get一个a=GLOBALS
直接出flag
include 'flag.php';
$a = @$_REQUEST['a'];
str_replace("{","",$a);
str_replace("}","",$a);
@eval("var_dump($$a);");
show_source(__FILE__);
?>
非预期解
直接上御剑扫描目录发现有flag.txt访问即可
预期解
好像是利用ping参数去执行各种命令,用%0a去绕过好像。。。没有详细去尝试
这也是个代码审计的题目,题目隐藏在index.php.txt里面,发现出题人很喜欢把源代码放在这个文件里面啊
error_reporting(0);
$flag = "***********";
if(isset($_GET['username'])){
if (0 == strcasecmp($flag,$_GET['username'])){
$a = fla;
echo "very good!Username is right";
}
else{
print 'Username is not right';}
}else
print 'Please give me username or password!';
if (isset($_GET['password'])){
if (is_numeric($_GET['password'])){
if (strlen($_GET['password']) < 4){
if ($_GET['password'] > 999){
$b = g;
print 'very good!Password is right
';
}else
print 'Password too little
';
}else
print 'Password too long
';
}else
print 'Password is not numeric
';
}
if ($a.$b == "flag")
print $flag;
?>
一个很简单的绕过,只是组合这来考查数据的表示方法绕过还有数组绕过
首先这个函数strcasecmp
出现在==
后面,一旦==
出现我们就要警惕了,这里我们可以使这个函数报错然后使之满足弱类型0 == false
这样就绕过了第一个判断,使$a=fla
,这是为了使后面的
if ($a.$b == "flag")
,然后在审计下面的password
部分,password的部分其实就是一个典型的数字绕过的代码审计题目,我们可以选择用科学计数法去绕过,这里我用的是9e9
,所以我最后的payload为
http://118.190.152.202:8017/?username[]=123&password=9e9
这一题根据题目给的提示把referer还有各种有关ip的参数都改掉发包发现一个奇怪的地址
打开地址的源代码发现有一段奇怪的base64
解码发现
<script>alert("password:xinyiji.com")script>
这个就是密码,输入就得到flag
这个题完全考的不是逆向,完完全全的密码学RSA
打开发现一个公钥文件
用OpenSSL打开公钥文件得到他的模数n,于是去factordb.com分解一波模数
得到p和q
然后常规操作得到秘钥d
然后用rsa-tool得到秘钥文件,又重新用openssl以一个解密就好
openssl rsautl -decrypt -in encrypted.message1 -inkey key.pem -out flag.txt
openssl rsautl -decrypt -in encrypted.message2 -inkey key.pem -out flag2.txt
openssl rsautl -decrypt -in encrypted.message3 -inkey key.pem -out flag3.txt
最后在此求一波大佬的wp学习啊。。。。。