WEB 10.

 

做下之前没做完的些。

1.bug ku 管理员系统。

打开题目,发现为提交窗口,随便输个,

碰到这个就想到伪造IP头,记得以前做过这么一道题,那道题用的是,x-client-ip: 127.0.0.1,就去记录了几个伪造ip头的方法。

x-forwarded-for: 127.0.0.1

x-remote-IP: 127.0.0.1

x-remote-ip: 127.0.0.1

x-client-ip: 127.0.0.1

x-client-IP: 127.0.0.1

X-Real-IP: 127.0.0.1

这里同样伪装成本地IP,

但这里还需要管理员和管理员密码,看源码发现底部有一段base64密文,

解码看看,

用admin,test123  登陆试试(抓包改ip头),

 点击 GO  得到flag

 

2.bugku  网站被黑

打开题目发现是个黑页,

什么都看不了,加几个php页面看看,

尝试了index.php, flag.php,webshell.php,shell.php,

发现shell.php中有

尝试了一些常见密码无果后,用burp爆破,

发现密码,输入即得

3.bugku  web5

打开题目发现为jsfuck,之前也做了几道类似的,大概就是要观察符号的前后对应,

查看源码发现jsfuck代码,去控制台跑,发现报错

观察了下有一个小括号没有对应,加上后弹出

输入后但他....

想了半天看到题目格式要大写...

改成大写对了就

4.bugku 本地包含。

打开题目

读一下发现有eval(),这个函数可用来做命令执行漏洞,

这里根据"var_durp($a)",构造payload

?hello=1);show_source(%27flag.php%27);var_dump(3

闭合()以及“”,

拿到flag

5.bug ku 变量1

代码审计。

读完发现var_dump()中有两个$$,查了一下

这里可以理解为$($args)

构造payload :?args=GLOBALS   ---用全局数组来定义他,

在eval中便会将$GLOBALS数组中存放的所有变量以数组的方式输出 得到flag,

6.bugku flag在index中

这个确实没什么头绪,看了wp才理解了。

打开题目一路往下点,

url中看到了?file提示文件包含漏洞,

直接构造payload:?file=php://filter/read=convert.base64-encode/resource=index.php

base64解码得到源码

解释一下内容,

php://是一种协议名称,php://filter/是一种访问本地文件的协议,/read=convert.base64-encode/表示读取的方式是base64编码后,resource=index.php表示目标文件为index.php。

这里是执行不成功才会返回源码,这里base64编码是必须要的。

7.bugku备份。

打开题目发现是一段字符串,推测MD5加密,

解一下

为两个null。

这里不知道怎么下手了,根据题目提示查了一下备份文件,一般为.bak文件,在后面加一个.bak

发现竟然提示下载了,下载打开看看,

<?php
/**
 * Created by PhpStorm.
 * User: Norse
 * Date: 2017/8/6
 * Time: 20:22
*/

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";
}
?>

代码审计,功能为把两个参数中的key替换为空(这里可以用kekeyy绕过),然后对key1,key2的值进行md5加密,并进行比较,

因为MD5不能处理数组,这里可以利用它来构造payload: ?kekeyy1[]=b&kekey2[]=a

8.cookies欺骗

打开题目发现是一串字符,源码也没有什么,

发现url中有a2V5cy50eHQ=一串,解码出来为keys.txt,

这应该就要用base编码后再访问,这里尝试访问index.php,编码后传入

给line赋值,发现应该是源码,这里寻了一份脚本
import requests
a=30
for i in range(a):
    url="http://120.24.86.145:8002/web11/index.php?line="+str(i)+"&filename=aW5kZXgucGhw" 
    s=requests.get(url)
    print s.text

输出源码,

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

$file_list[2]='keys.php';}//关键部分

这里表示传参后cookie必须满足margin=margin,keys.php要编码

抓包,在cookie中写入margin=margin,

得到flag。

9.bugku 前女友

打开题目,查看源代码,发现一个txt文件

前面说了,MD5()是不能操作数组的,会返回null。

题目表示v1!=v2且md5(v1)=md5(v2),正好满足,

这里把两个数组传上去

payload:?v1[]=a&v2[]=b&v3[]=c  ,得到flag

10.bugku 字符正则

正则是之前看了挺久的,但看了这个题....确实差的还有些多。

主要规则:

1.表达式直接写出来的字符串直接利用,如key
2.“.”代表任意字符
3.“*”代表一个或一序列字符重复出现的次数,即前一个字符重复任意次
4.“\/”代表“/”
5.[a-z]代表a-z中的任意一个字符
6.[[:punct:]]代表任意一个字符,包括各种符号
7./i代表大小写不敏感
8.{4-7}代表[0-9]中数字连续出现的次数是4-7次

(参考原文:https://blog.csdn.net/qq_30464257/article/details/81160656 )

分析一下preg_match中的内容,

一位一位往出来读(对着盯了半天...)

构造?id=keyxxkeyxxxxkey:/x/xkeyx!

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值