身为在安全里摸着石头过河的菜鸟,做了这么多bugku的题,是时候来一次总结了。
bugku -login
bugku-SKCTF管理系统
首先看到题目有注册选项,想到是二次注入。
按要求创建 username:admin'#2 password:123456Qw
注册成功 进行登陆
提示我不是管理员,可以推测username中的‘#’被过滤。
第二种方法:username:admin后加空格绕过,在select查询时会过滤掉admin的空格。
登陆,拿到flag: SKCTF{4Dm1n_HaV3_GreAt_p0w3R}
bugku-这是一个神奇的登录界面
按照老规矩来一套 admin'or 1=1# 爆 try again!
admin'and 1=2# 爆 try again!
admin"or 1=1# 有情况 good job 看来思路是对的!
admin"and 1=2 爆 try again! 两次结果不一样,看来是布尔型盲注。
这里需要用python脚本会更快,奈何自己不会python(要学的太多了,一入安全深似海,只能慢慢来了)这里就借用sqlmap吧。
拿到数据库名,接下个继续爆就行了。
bugku-flag.php
输入参数,无回显,用burpsuite无抓到包,证明数据并无发送。此login是障眼法。
检查代码无恙,御剑扫描无结果,没有思路,只能看下大佬的wp。
这道题有点脑洞打开,题目提醒hinit,所以需要传入hint值。(mmp)
由源码可以看出是序列化问题,抓包修改就ok了。
bugku-sql注入2
这是我做过最难的注入题了。(学会了很多骚套路)
像这种过滤严格的题,我自己做了个sql注入的密码本,来检测过滤了什么。
异或注入:id=1'^(length('and')!=0) ps:两者相等为0,不等为1。
盲注:
substr(database()from(1)for(1))==substr(database(),1,1)----可是for被过滤了啊!!!!!!!
不用怕直接这样substr(database()from(1))------>>>如果默认不加后面的参数的话他会返回后面所有的字符串。(但是进行比较的时候只会用第一个进行比较)
大佬wp:BUGKU中的sql注入2(很有用的一个技巧) - Mikasa - CSDN博客
第二种做法(源码泄露)
大佬wp:bugkuCTF(SQL注入2) - 程序员大本营
Nikto 是一款开放源代码的、功能强大的WEB扫描评估软件,能对web服务器多种安全项目进行测试的扫描软件,去寻找已知有名的漏洞,能在230多种服务器上扫描出 2600多种有潜在危险的文件、CGI及其他问题,它可以扫描指定主机的WEB类型、主机名、特定目录、COOKIE、特定CGI漏洞、返回主机允许的 http模式等等。它也使用LibWhiske库,但通常比Whisker更新的更为频繁。Nikto是网管安全人员必备的WEB审计工具之一
nikto 使用教程
bugku-管理员系统
第一眼以为是sql注入,尝试基本操作后,发现都是一样的回显
我以为是关键词被过滤,上字典进行爆破,发现并没有过滤关键字。
疑惑!!注意到提示的 本地管理员 想到伪造登陆信息
在登陆页面 查看源代码 会发现进行base64加密的登陆密码。
同类型题 bugku-请从本地访问
flag{loc-al-h-o-st1}
ps:X-Forwarded-For:client,proxy1,proxy2
bugku-文件上传漏洞
bugku-求getshell通关
从题目可以知道是一道写入一句话木马的题,打开后看到是文件上传漏洞。
第一步:上传 waf.jpgaaa 文件,上传成功 ,说明是黑名单绕过。
把黑名单上传漏洞都试了一遍后 仍然是 invaled file!
由于是文件上传 想到了 content-type :multipart/form-data里的bourbody
multipart首字母大写绕过waf。
filename=“file.php5”
content-type:image/jpeg
成功绕过 拿到flag。
题外话
对于文件上传,我一直是先尝试修改文件后缀名,这道题改变了我对文件上传漏洞测试的步骤。
第一步 测试是前端还是服务端验证(尝试是否可用burpsuite抓到包)。
第二步 尝试绕过安全狗。
第三步 修改文件后缀进行绕过。
https://blog.csdn.net/nzjdsds/article/details/81813652
bugku-never give up
进入后观察url:http://123.206.87.240:8006/test/hello.php?id=1
第一感觉是sql注入,经过不断尝试后(sql注入测试,改变传输方式),页面无任何改变。可以确定这个参数只是个幌子。
查看页面源代码,发现1p.html
访问url:http://123.206.87.240:8006/test/1p.html,是bugku页面。(到这里我已经迷茫了,不知道应该做些什么)。
查看大佬写的wp后,知道页面进行了重定向。(https://www.bugku.com/),页面进行了跳转。
查看 http://123.206.87.240:8006/test/1p.html源代码,发现base64加密的密文。(JTIyJTNCaWYlMjglMjElMjRfR0VUJTVCJTI3aWQlMjclNUQlMjklMEElN0IlMEElMDloZWFkZXIlMjglMjdMb2NhdGlvbiUzQSUyMGhlbGxvLnBocCUzRmlkJTNEMSUyNyUyOSUzQiUwQSUwOWV4aXQlMjglMjklM0IlMEElN0QlMEElMjRpZCUzRCUyNF9HRVQlNUIlMjdpZCUyNyU1RCUzQiUwQSUyNGElM0QlMjRfR0VUJTVCJTI3YSUyNyU1RCUzQiUwQSUyNGIlM0QlMjRfR0VUJTVCJTI3YiUyNyU1RCUzQiUwQWlmJTI4c3RyaXBvcyUyOCUyNGElMkMlMjcuJTI3JTI5JTI5JTBBJTdCJTBBJTA5ZWNobyUyMCUyN25vJTIwbm8lMjBubyUyMG5vJTIwbm8lMjBubyUyMG5vJTI3JTNCJTBBJTA5cmV0dXJuJTIwJTNCJTBBJTdEJTBBJTI0ZGF0YSUyMCUzRCUyMEBmaWxlX2dldF9jb250ZW50cyUyOCUyNGElMkMlMjdyJTI3JTI5JTNCJTBBaWYlMjglMjRkYXRhJTNEJTNEJTIyYnVna3UlMjBpcyUyMGElMjBuaWNlJTIwcGxhdGVmb3JtJTIxJTIyJTIwYW5kJTIwJTI0aWQlM0QlM0QwJTIwYW5kJTIwc3RybGVuJTI4JTI0YiUyOSUzRTUlMjBhbmQlMjBlcmVnaSUyOCUyMjExMSUyMi5zdWJzdHIlMjglMjRiJTJDMCUyQzElMjklMkMlMjIxMTE0JTIyJTI5JTIwYW5kJTIwc3Vic3RyJTI4JTI0YiUyQzAlMkMxJTI5JTIxJTNENCUyOSUwQSU3QiUwQSUwOXJlcXVpcmUlMjglMjJmNGwyYTNnLnR4dCUyMiUyOSUzQiUwQSU3RCUwQWVsc2UlMEElN0IlMEElMDlwcmludCUyMCUyMm5ldmVyJTIwbmV2ZXIlMjBuZXZlciUyMGdpdmUlMjB1cCUyMCUyMSUyMSUyMSUyMiUzQiUwQSU3RCUwQSUwQSUwQSUzRiUzRQ%3D%3D--%3E),j解码后再进行url解码,得到源码。
window.location.href='http://www.bugku.com';
<!--";if(!$_GET['id'])
{
header('Location: hello.php?id=1');
exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))
{
echo 'no no no no no no no';
return ;
}
$data = @file_get_contents($a,'r');
if($data=="bugku
is a nice plateform!" and $id==0 and strlen($b)>5 and
eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
{
require("f4l2a3g.txt");
}
else
{
print "never never never give up !!!";
}
?>-->
直接访问 f4l2a3g.txt。