欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

bugku web wp

程序员文章站 2022-07-16 16:06:16
...

写在前面:
简单步骤不再复现,只是再复习一下知识点,可以挖深一点。

web2

F12

计算器

F12改html

$get $post

? & hackbar

矛盾

很多解法
1加一个符号就行了

web3

F12,发现一串密文,Unicode解码

域名解析

我们百度这个是什么意思

是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。
互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。

我们知道我们的网址是192.xxx.xxx.xx这种形式,那为什么我们能用www.baidu.com呢,就是绑定了。

百度搜索,如何将域名解析到本机。

你必须让他停下来

抓包,多go几次就看到了、

本地包含

崩了

变量1

<?php  

error_reporting(0);
include "flag1.php";
highlight_file(__file__);
if(isset($_GET['args'])){
    $args = $_GET['args'];
    if(!preg_match("/^\w+$/",$args)){
        die("args error!");
    }
    eval("var_dump($$args);");
}
?>

最后一句话的意思是打印出我们要的传进去的值作为变量名
大概意思是,
?args=1
那就打印 $1
?args=dqw
那就打印 $dqw
初步想法是传flag,但是不可能让你那么简单就拿到啊对吧。

这里是引用$GLOBALS
$GLOBALS — 引用全局作用域中可用的全部变量
说明
一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

WEB5

JSFUCK解码
丢到F12里面执行

头等舱

抓包

网站被黑

扫后台,抓包,**

管理员系统

这题很鬼,网页源代码的很下面有个base64加密的东西,解密是test123,然后uesr=admin,pass=test123还是错,说IP不行,那就加本地头,X-Forwarded-For=127.0.0.1通过

WEB4

看源代码很容易看懂,就一个escape加密。解密出来为一串函数

function checkSubmit() {
    var a = document.getElementById("password");
    if ("undefined" != typeof a) {
        if ("67d709b2b54aa2aa648cf6e87a7114f1" == a.value)
            return !0;
        alert("Error");
        a.focus();
        return !1
    }
}
document.getElementById("levelQuest").onsubmit = checkSubmit;

很简单了复制粘贴就好

flag在index里

伪协议读取源码

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

输入密码查看flag

纯**

点击100w次

var clicks=0
    $(function() {
      $("#cookie")
        .mousedown(function() {
          $(this).width('350px').height('350px');
        })
        .mouseup(function() {
          $(this).width('375px').height('375px');
          clicks++;
          $("#clickcount").text(clicks);
          if(clicks >= 1000000){
          	var form = $('<form action="" method="post">' +
						'<input type="text" name="clicks" value="' + clicks + '" hidden/>' +
						'</form>');
						$('body').append(form);
						form.submit();
          }
        });
    });

看到这个源码,有个mousedown和up,点击一下clicks加一,然后有个from表单,有一个hidden的post,可以通过post clicks的值改变clicks,那就hackbar

备份是个好习惯

看到备份,看到一串不知道是啥的东西长得像16进制但是转换不出来。
尝试index.php~和index.php.bak,存在bak,打开

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

看源码我们分析,
1、是有一个replace,会把key代替成后面的空白
2、md5相等

两个知识点,一个是绕过字符过滤,一个是md5的0E相等
空白用双写绕过,0E相等直接百度。
?kekeyy1=s878926199a&kekeyy2=s155964671a

成绩单

最简单的注入
测试发现是单引号注入
order by,table columns 再到字段
这里有一个奇怪的地方,就是order by 能回显四段,但是我怎么放都只能在最后一个地方回显

秋名山老司机

我觉得下面这个大佬的wp最好了

import requests
import re
url="http://123.206.87.240:8002/qiumingshan/"
r=requests.session()
text=r.get(url).text #将get到的数据以文本形式显示出来
cont=re.findall('<div>(.*?)</div>',text) #匹配出计算表达式,返回的是列表
cont="".join(cont) #列表转字符串,因为eval()接收的参数类型为string, bytes or code object
cont=cont[:-3] #删掉多余的字符
post=eval(cont) #eval()可以把字符串当做有效表达式进行计算
data={'value':post} #构造post数据
ans=r.post(url,data=data)
print(ans.text)

bugku web wp