0%

攻防世界进阶

开始攻防世界的进阶

baby_web

想想初始页面是哪个。

我们首先想到index.php,访问。

点击网络,在消息头中找到flag。

Training-WWW-Robots

送分题,翻译一下那段话,介绍了robots.txt协议,搜索引擎中访问网站的时候要查看的第一个文件,

我们访问一下就发现了flag的位置跟新手练习区的robots一样。

php_rce

原理:ThinkPHP5框架底层对控制器名过滤不严,可以通过url调用到ThinkPHP框架内部的敏感函数,进而导致getshell漏洞。

这题的漏洞是关于ThinkPHP V5,随便百度一下拿一下payload,即可执行我们想要的操作。(这里也告诉我们相关比较明显提示的漏洞我们可以直接百度)

命令执行成功,查找flag位置。

最后查看flag内容。

Web_php_include

类型:文件包含漏洞
echo:输出用户想查询的信息,所以往后拼接hello,?:拼接符

方法一:page进行传参数,绕过while,执行其他语句,利用提交参数进行拼接,然后利用system函数进行LS查看。

?page=http://127.0.0.1/index.php/?hello=<?system(%22ls%22);?>
index.php主页面,

show_source:展示其他PHP网页信息。
?page=http://127.0.0.1/index.php/?hello=<?show_source("fl4gisisish3r3.php");?>记得加引号。
得到flag。

方法二:php伪协议

利用system函数获取的所有能够显示的文件内容,都是被浏览器进行了base64加密,不会显示在主页面上。
方法:?page=php://input POST提交
php://在使用时存在大小写区别,可大小写绕过。

这里使用hackbar一直提交失败,使用burp才成功了。

方法三:封装协议-data://

区别在于用get提交
?page=data://text/plain,<?php system('ls');?>

supersqli

题目描述:随便注,来自强网杯2019

一看就是sql注入题目。

首先判断一下注入类型

为字符型,单引号。

判断字段数

3报错,2正常回显,所以字段数为2。

直接开始联合查询注入,

有一个正则表达式,把联合注入语句部分代码过滤了,这里我们试一下堆叠注入。

可以爆出数据,

也可以爆出表。

有两个表,这里不需要选择表,应该默认指定数据库,但是可以猜出数据库就是supersql,再加from supersql 果然这两个表属于supersql。

查询一下两个表名的字段,

记得字符串为表名操作时记得加反引号

观察两个表的字段,可以知道words表是默认查询的表,传入inject参数的值也就是赋值给了id。

所以我们可以修改数字表名为words表名,再修改flag为id这个字段,即可查询flag值,尝试一下。

使用rename修改表名,再使用alter修改字段名,这里记得要先把原来的words表名修改,不然修改不了。

语法:

修改表名

rename table 表名1 to 表名2

修改字段名

alter table 表名 change 字段名1 字段名2 数据类型。

输入1’ or ‘1’=’1 获得flag。

本题要一气呵成,如果分开写,后面会报错,导致无法执行我们想要执行的代码。

ics-06

发现url有个id值,想了半天不知道怎么弄,直接爆破id值结果就出来了。

Warm up(代码审计)

先F12查看源码,看到注释source.php,

访问一下,页面出现源码,

发现一个hint.php先访问,
发现flag在ffffllllaaaagggg里(暗示要访问四层目录)。再回去审查代码,
可以看到最后的include 是可以动态构造参数的,那应该就是解题关键了。
不过要经过三个判断

第一个:检查一个变量是否为空

第二个:是否为字符串

第三个:通过函数来检查

我们要构造的payload本身就满足前两点所以无视

重要是第三点的这个函数

函数作用是分三步检查传进来的参数是否满足白名单:

$whitelist = [“source”=>”source.php”,”hint”=>”hint.php”];

$_REQUEST 是通过 GET,POST 和 COOKIE 输入机制来传递参数,这里通过get传参。

后面就是构造payload,访问多个目录,得到flag

NewsCenter

这是一题简单sql注入题,不存在任何过滤。

方法一:手工注入

上传了爆表的,其它的类似。。。(记得把前面置空,不然查询的不是我们想要的结果)

方法二 sqlmap爆破

记得数据要加””,这种方式是通过post提交。

NaNNaNNaNNaN-Batman

下载文件,通过浏览器方式打开,有一个post提交的,但是输入什么都无反应,

再用记事本打开是一段js代码(乱码了),发现代码末尾有一个函数eval,修改成alert即可弹出正常代码。(文件保存格式要.html格式)

审计一下代码,大概看得懂,因为没学过js代码,想把它转成python代码运行,其实没必要,在控制台即可输入js代码,得到结果。

PHP in_array() 函数
in_array() 函数搜索数组中是否存在指定的值。
注释:如果 search 参数是字符串且 type 参数被设置为 TRUE,则搜索区分大小写。
in_array(search,array,type)
1.函数mb_substr(a,m,n):截取a字符串第m位到第n位的内容并返回
2.函数mb_strpos(b,x):获取b字符串中,x字符/字符串第一次出现的位置
3.include目录穿越:include会把第一个/后面的路径作为访问路径来寻找文件
解密:逆向加法运算,base64解密,python脚本:
import base64
def python_decode(string):
zimu = “abcdefghijklmnopqrstuvwxyz”
rot_13 =””
for i in string:
if i.isdigit():
rot_13 += i
else:
try:
rot_13 += zimu[zimu.index(i)-13]
except:
rot_13 += zimu[zimu.index(i.lower())-13].upper()
fz = rot_13[::-1]
base = base64.b64decode(fz)
base = [chr(ord(i)-1) for i in base]
fz = base[::-1]
print “”.join(fz)

python_decode(“a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws”)

-------------本文结束感谢您的阅读-------------

欢迎关注我的其它发布渠道