0%

刷题记录-7

Pretty Horrible Program 1

这道题水得很,虽然我没有完全看懂源码,但也能稍作注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if (isset($_GET['bingus'])) {
$input = $_GET['bingus']; //把get到的值赋给input
$to_replace = 'bingus'; //让to_replace为bingus
$clean_string = preg_replace("/$to_replace/", '', $input);//让clean_string为input中把bingus替换为空格后的值
echo "<p>Your string is: $clean_string</p>";
if ($clean_string == $to_replace) {
echo "<h2 class=\"answer\">Bingus <span style=\"color: green;\">IS</span> your beloved</h2>"; //如果clean_string的值为bingus,那么输出flag
output_flag();
} else {
echo "<h2 class=\"answer\">Bingus <span style=\"color: red;\">IS NOT</span> your beloved</h2>";
}
}
?>

但是通过输入bingus回显空,输入aaa回显aaa,所以我们双写绕过,也就是binbingusgus,得到flag

Shell

首先要知道什么是shell,这里我们摘自百度百科:

Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。 Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。 然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux。 Shell 是如何连接用户和内核的? Shell 能够接收用户输入的命令,并对命令进行处理,处理完毕后再将结果反馈给用户,比如输出到显示器、写入到文件等,这就是大部分读者对 Shell 的认知。

简单来说,shell就是运行linux命令的前提,所以这里绝对和命令执行相关

题目提示为:送给大家一个过狗一句话 $poc=”a#s#s#e#r#t”; $poc_1=explode(“#”,$poc); $poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; $poc_2($_GET[‘s’])

这里我们可以发现存在变量s,并由我们接收我们输入的内容,所以我们直接令s=ls,无回显,那么我们在最后加一个; 可是还是没有回显,接着我们令s=system(“ls”) ,有回显关键字,我们cat一下文档得到flag。

由此可推出,这里s输入的是一段命令,并且可被执行。

社工-伪造

真的很无语,想来想去找不到办法,结果看了一下wp,我直接当场去世,要把自己的qq昵称和头像换成他的男友才行,直接登录他男友的账号是不行的,有字符过滤。头一次见这个,很牛p。

社工-初步收集

进去后发现可下载文件,我们下载后打开,发现没啥线索,既然是信息搜集,我们就要扫后台,扫描到.git文件,进去后,没有发现关键线索,但是发现了后台登录页面,但是不知道用户名和密码,实在没办法了,看大佬wp,发现我们要使用wireshark工具进行抓包,先开wireshark,然后再开exe文件,然后在包中尝试搜索User发现关键信息

image-20220402180235715

这里的用户名和密码一看就是经过了base64加密。解密结果如下

User:bugkuku@163.com

Pass:XSLROCPMNWWZQDZL

登录显示密码错误,然后继续看wp

知道邮箱可以用授权码登录,所以我们用第三方邮箱登录看看有什么关键信息

用win10自带的邮箱登录成功

然后找了半天也没找的关键邮件,可能是被删了,但是按照wp上说,会有一个如下的邮件

image-20220402181540251

我们猜测可能是生日为密码,mara为账户

推算的生日为20010206,登录后台得到flag

image-20220402181728774

程序员本地网站

X-Forwarded-For:127.0.0.1

无语住了