CTF 笔记 1
[极客大挑战 2019]EasySQL
学习资料
helloctf-sql注入
CSDN-SQL 语法
实战

1 | select *from 表 where username= '' &password='' --条件 |
那么可以采取注释后面密码的方式并且满足条件即可即实现如下效果,选择比较常用的 admin 账号来进行登录。
1 | select *from 表 where username= 'admin' or '1'='1' -- a' --&password='1' |
注意由于这里 sql 的注释 – 后需要空格,所以写为 – a 较为稳妥。 那么则输入admin’ or ‘1’=’1’ – a 或者也可以让后面的密码保持成立
1 | select *from 表 where username= 'admin' or '1'='1' &password= '1' or '1'='1' |
写完完整的语句后再复制两个引号内的内容可以减少一些错误。
[ACTF2020 新生赛]Exec
exec 、Linux 命令操作 点开后是一个执行 ping 命令的地方,那么说明当前环境是一个命令执行的环境,尝试
1 | ping 127.1.1.0 | cat /flag |
直接可以获得 flag。
[GXYCTF2019]Ping Ping Ping
打开页面之后提示路径/?ip=
简单的判断操作系统的命令 ifconfig 判断出来是 linux.
题目中过滤 space,bash,flag.

利用 cat $IFS$1 `ls` 即可把 ls 输出的内容全部进行 cat 读取 或者使用参数化拼接
1 | ?ip=127.0.0.1;A=ag;B=fl;C=$B$A;cat$IFS$C.php |
这里它对内容进行了 php 隐藏,利用 Ctrl + U 即可查看到 flag。
[极客大挑战 2019]PHP
php 反序列化、代码审计、__wakeup 绕过
题目提示我们网站做了备份的处理,利用 dirsearch 找到了存有源码的 www.zip 打开进行代码审计。
index.php
1 |
|
在 index 页面可以进行传参,同时有 PHP 的反序列化操作。
class.php
1 | function __wakeup(){ |
可以得知我们需要进行构造 username=admin, password=100 的 payload 不过在网页进行反序列化的时候魔术方法 __wakeup 会被先执行。
先编写如下的 payload
1 |
|
查看 PHP 版本来找绕过 __wakeup 漏洞。

__wakeup 的执行
将对象中变量的个数借助 cyberchef 改成 3 再访问即可获得 flag.

几个常用的魔术方法:
__construct()
PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。
__destruct()
析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
__sleep()
serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。
__wakeup()
unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。
__toString()
__toString() 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。
[极客大挑战 2019]Secret File
PHP 文件包含、信息泄露
点开访问源代码提示访问 Archive_room.php


end.php。
再访问 secr3t.php

php://filter/read=convert.base64-encode/resource=flag.php
一句话木马变形
PHP 过滤绕过、RCE

phpinfo() 获取基本信息。
从中可以得知 PHP 的版本号是 7.3.29

= )。eval() 将传入的字符串当做代码执行,system() 执行系统命令。
先想办法执行eval(‘system(“whoami”)’);

| 用户 / 身份 | 常见作用 | 能够执行的作用 |
|---|---|---|
root |
系统超级用户,通常拥有广泛的系统管理权限 | 许多系统级操作可以执行,但仍可能受容器或安全策略限制 |
普通用户,如 kali |
日常登录、运行程序、管理自己有权访问的文件 | 通常只能访问授权范围内的资源 |
www-data |
常见的 Web 服务账户 | Web 代码可能以此身份运行,访问范围取决于服务器配置 |
nobody |
某些服务使用的低权限账户 | 通常用于减少服务被攻破后的影响 |
daemon |
某些后台服务使用的账户 | 具体权限由服务配置决定 |
利用 ls 命令得知存在 flag.php,这里直接进行 cat flag.php
[ACTF2020 新生赛]BackupFile
扫描端口发现备份文件 index.php.bak,
1 |
|
$key == $str — 弱类型比较,字符串和数字比较时,字符串会被转成数字,遇到非数字时会停止在比较时类型转化。
则只需要传入 key = 123即可。
SSRF绕过
Server-Side Request Forgery SSRF、长度过滤绕过 打开就是一个 php 代码
1 |
|
可以通过构造本地回环的方式读取服务器本地的敏感文件。
对于长度的绕过采用 0 即可代表 127.1.0.0






