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一下,爆破设置如下

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

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

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

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

此题亮点就是双写注入。
[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一下过滤的字符,结果如下

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

本以为是报错注入,可是连括号都过滤了,看了一眼别人的wp,放弃了,呜呜呜
WEB151
前端绕过文件格式验证

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

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