BUGKU-CTF入门笔记

目录

16.cookies

17.never_give_up

18.shell

19.成绩查询

20.秋名山车神


16.cookies

其实题目已经提示了是cookie欺骗,但是这个题目难点在于如何构造这个cookie。打开题目,是一串这样的字符串,发现URL里有两个传参,一个是line和filename,filename传入的参数解码是keys.txt。(这其实是一个提示,但是我当时没反应过来,我看了writeup中师傅们是根据这个构造了keys.php的加密去访问,也没东西,然后构造了index.php去访问,发现有一个<?php,然后再往line中添加行数来显示剩余的代码!)

找到代码后这题就很简单,全部源码如下。只需要构造对应的payload即可。

17.never_give_up

一进来,直接查看网页源码,发现提示1p.html,访问该网页发现有源码提示。

看到加密内容,先拿去解密,先base64,然后URL解码,出来源代码,开始审计。

通过审计源码发现,主要难点有以下几个。1.file_get_contents() 函数读取变量 $a 的值而得,所以 $a 的值必须为数据流;2.eregi(a,b)指的是,不区分大小写的情况下,a是否包含在b里;3.php中.是拼接的意思;4.b的参数可以是*12345或者?12345或者.12345或者%0012345(这里是运用了正则表达式的思想)

构造payload:http://114.67.175.224:10727/hello.php?id=0a&a=data://text/plain,bugku is a nice plateform!&b=%0012345,这里很奇怪,源码里说id的参数要等于0,但是传入0却不行,必须要弱类型比较。

18.shell

题目提示了一段一句话代码,进入题目是一片空白,其实我一开始以为要自己上传一个一句话,一顿操作,看网页源码,数据包,目录扫描都没搞头,结果人家是已经上传好了,自己构造就行了。

payload:s=system('tac flaga15808abee46a1d5.txt'),或者:s=var_dump(file_get_contents('flaga15808abee46a1d5.txt'))

19.成绩查询

这题没有提示,进来我就感觉是sql注入,测试了一下果然是sql注入,而且好像还没有过滤。

查询数据库:skctf,数据表:fl4g,列名:skctf_flag,然后构造paload查看内容:select skctf_flag from skctf.fl4g,直接出来flag。比较常规的sql注入。

20.秋名山车神

这是一道需要写脚本的题,我直接白嫖了一个。我看了下师傅们脚本大致内容就是首先get到页面,然后正则匹配出要计算的式子,然后计算式子内容,最后post的方式传入结果,得出flag。

import requests import re url = 'http://114.67.175.224:16091/' s = requests.Session() source = s.get(url)#获取页面对象 expression = re.search(r'(\d+[+\-/*])+\d+', source.text).group() #正则匹配想要的表达式 result = eval(expression)#计算正则匹配的内容 post = {'value': result} print(s.post(url, data = post).text)

这题还有师傅用手动解的,因为这个题目刷新会返回两种页面,其中cookie返回是不同的,只需要一直保持连接状态,然后去计算结果就可。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值