bugku web方向所有题解

第一题F12,第二题打开js文件,第三题 get参数第四题转换成post请求最后空一行加入what=flag 注意最后不能加回车,不然会把what的值认为是"flag\n"可以转换post加入参数,再转成get再转换成post第五题php弱类型 num=1df 随便什么,反正$num==1都能通过$num=$_GET['num'];if(!is_numeric($num)){ech...
摘要由CSDN通过智能技术生成

第一题F12,第二题打开js文件,第三题 get参数
第四题转换成post请求最后空一行加入what=flag 注意最后不能加回车,不然会把what的值认为是"flag\n"
可以转换post加入参数,再转成get再转换成post
第五题php弱类型 num=1df 随便什么,反正$num==1都能通过

$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}

第六题:decode as HTML
第七题:修改本地host文件,访问flag.baidu.com
应该在服务器里配置了禁止直接通过IP访问,通过header中Host的值可以分辨是否直接通过ip访问。
这题是这样的,直接访问域名的话DNS服务器无法解析域名,直接访问ip又会被查出来。
第八题:1.用burp repeater重放。2.禁用js,手动刷新界面
第九题 这题坏了。本地包含。eval的命令执行
var_dump() 函数用于输出变量的相关信息。
var_dump() 函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

<?php
    include "flag.php";  //flag存储在flag.php这个脚本里,但是被注释掉了,我们需要把flag.php的源码整个显示出来
    $a = @$_REQUEST['hello'];  //无论是以POST还是GET方式,都可以给$a赋值
    eval("var_dump($a);")  //var_dump可以输出变量的类型和值,详见手册
    show_source(__FILE__);
?>

?hello=);show_source(%27flag.php%27);//
相当于
eval("var_dump();show_source(%27flag.php%27);//);")

第十题

eval("var_dump($$args);");  args=GLOBALS
var_dump函数用于打印显示一个变量的内容与结构,以及类型的信息。
$args="GLOBALS" 一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。
$$args="$GLOBALS"
eval("var_dump($$args);");

第十一题:提交之后F12,jother编码。代码混淆加密。看上去有点像brainfuck
jother编码是在javascript语言中,利用少量特定字符构造精简的匿名函数对与字符串的编码方式。我理解是,javascript中使用少量特定字符对匿名函数进行编码加密。其中少量的特定字符包括:“+”、“!”、“(”、“)”、“[”、“]”、“{”、“}"。由此可见,1、递归在编码过程中是必须的。2、编码压缩率大于100%或者更高,也就是说编码后的长度比原长度长很多。
粘贴到console直接执行。字母大写

第十二题:HTTP header里面
第十三题:扫后台 shell.php 弱密码hack 网站特效还挺酷炫的
第十四题:注释有个base64编码test123。
IP禁止访问,请联系本地管理员登陆,IP已被记录.
http头里面要加X-Forwarded-For: 127.0.0.1,伪装成本地登录。X-Forwarded-For(XFF)是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。 是一个 HTTP 扩展头部,主要是为了让 Web 服务器获取访问用户的真实 IP 地址

第十五题:js代码混淆 unescape URL解码 F12,console执行,js格式化

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;

输入67d709b2b54aa2aa648cf6e87a7114f1,提交。 levelQuest是个不存在的id

第十六题:文件包含漏洞。?file=php://filter/read=convert.base64-encode/resource=index.php
第十七题:爆破 13579
第十八题:js,repeater
第十九题:
源码泄露工具,
https://coding.net/u/yihangwang/p/SourceLeakHacker/git?public=true
可以自动访问常见的CTF线索文件,如果返回正常说明文件存在。
index.php.bak

$str = str_replace('key','',$str);
md5($key1) == md5($key2) && $key1 !== $key2

第一步用kekeyy1 绕过str_replace
1.md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。
2.利用==比较漏洞
如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。QNKCDZO 或者 240610708
d41d8cd98f00b204e9800998ecf8427e是什么意思,拿到MD5解密试一下,结果为NULL,也就是说这是NULL的MD5值,因为默认是没有传入key1和key2的,这两个值也就是null.

下列的字符串的MD5值都是0e开头的:
QNKCDZO
240610708
s878926199a
s155964671a

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值