0%

刷题记录-6

WEB171

很经典的联合注入,这次相当于又复习了一遍,感觉以前的都忘了,好难过。

详细方法见sqlilabs中的第一关讲解

WEB172

与171相比,仅仅多了一个table,还是联合注入

WEB173

与171相比多了两个table,还是联合注入

萌新计划web1

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
40
41
<html>
<head>
<title>ctf.show萌新计划web1</title>
<meta charset="utf-8">
</head>
<body>
<?php
# 包含数据库连接文件
include("config.php");
# 判断get提交的参数id是否存在
if(isset($_GET['id'])){
$id = $_GET['id'];
# 判断id的值是否大于999
if(intval($id) > 999){
# id 大于 999 直接退出并返回错误
die("id error");
}else{
# id 小于 999 拼接sql语句
$sql = "select * from article where id = $id order by id limit 1 ";
echo "执行的sql为:$sql<br>";
# 执行sql 语句
$result = $conn->query($sql);
# 判断有没有查询结果
if ($result->num_rows > 0) {
# 如果有结果,获取结果对象的值$row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - title: " . $row["title"]. " <br><hr>" . $row["content"]. "<br>";
}
}
# 关闭数据库连接
$conn->close();
}

}else{
highlight_file(__FILE__);
}

?>
</body>
<!-- flag in id = 1000 -->
</html>

方法很多

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
‘1000’
“1000”
123<<3
680|320
16进制(0x3e8)
999+1
10*100
999-(-1)/999–1/999- -1
(1000)
144^888(MySQL会报错,但也能执行)按位异或
~~1000 (双重取反)
0b1111101000(二进制)
1 or 1=1%23(万能密码显示所有)
id#(显示所有)
看下一道题的过滤,应该是!、\、/、>、hex可以绕过,不知道怎么弄

[极客大挑战 2019]BabySQL

题目说是有过滤,所以我们浅浅的Fuzz一下,爆破设置如下

image-20220302173225420

由于老是出现访问过快的错误,所以这里要用到延时爆破,

image-20220302173055752

爆破结果如下的均为以过滤字符

image-20220302173138866

因为过滤了老多字符,所以这里我们用双写绕过,又因为这里过滤了or,所以order的双写不能是oorderrder,这里要用oorrder,然后接下来就是常规的联合注入,难度不大。

image-20220302174007100

之后就不一一解释了,但要注意的是,flag没在当前库,这里还要查看其他库

image-20220302174719700

此题亮点就是双写注入。

[ACTF2020 新生赛]BackupFile

用diresearch扫一下后台,这里我用win的扫,一直弹屏,属实怕了,所以改用了kali系统进行扫描,结果有flag.php进去空页,还有index.php.bak进入后下载源码。这里又学到了一个新技巧,在指令尾部加上-e php可以只扫描php语言的文件,大大节约了时间

源码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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) {
echo $flag;
}
}
else {
echo "Try to find out source file!";
}

intval函数,这题是弱比较,只需让key=123即可,最终payload为

1
http://82388c3e-bc0a-4120-9fb5-a60a3aea7573.node4.buuoj.cn:81/?key=123

[GXYCTF2019]BabySQli

首先尝试联合注入,然后发现提示 do not hack me! 这必是有过滤,所以我们Fuzz一下过滤的字符,结果如下

image-20220303180050773

判断字段数为3后,发现没有回显点,所以放弃联合注入

image-20220303180147302

本以为是报错注入,可是连括号都过滤了,看了一眼别人的wp,放弃了,呜呜呜

WEB151

前端绕过文件格式验证

image-20220305170944353

不过连接后,flag可不好找,我们用find / -name "flag.*"寻找会更快,这里有许多文件访问被拒绝,所以内容比较多,最终可摘取3个结果

1
2
3
4
5
6
/var/www/html/flag.php

/tmp/flag.sh

/tmp/html/flag.php

image-20220305171333948

每个都cat一下,最终得到flag