CTF 【每日一题20160618】简单xss示例

来源:互联网 发布:ip网络功放链接 编辑:程序博客网 时间:2024/06/05 18:03

继续黑客游戏 第五关 复杂的文字游戏
这里写图片描述
点一下have a try 下面一行后那个回车
这里写图片描述
并有弹出消息框
这里写图片描述


分析:

这是要考XSS,右侧还提示“会用错误控制台么?”,这个是提示用chrome的console(按F12调用)。首先看一下源码,发现里面有一段手写脚本(编码风格一般较差的那种),似乎是网页程序员留下的:
    他们说输入的地方就是攻击的开始                    </blockquote>                    <div  class="main_form lvl5_form">                        <p><label for="try">尝试一下 Have A Try</label> <span id="try_l"></span></p>                        <p class="key_p" id="try_p">                        <input type="text" name="try" id="try" class="txtbox" required="true" title="script" value='<script>alert("something strange");<\/script>' />                        <a href="javascript:void(0);" class="icon shortcut_icon" title="确定" onclick="do_try();"></a>
<script type="text/javascript">function do_try() {    var k_id = '#try';    var p_id = k_id + '_p';    var l_id = k_id + '_l';    var t_id = k_id + '_tip';    if ( '' == $(k_id).val() ) {        notice_me( k_id, 'script' );    } else {        var data = '&do=check&val=' + $(k_id).val();        ajax_post(            'index.php',            data,            function() {                $( l_id ).html( get_loadinghtml('c') );                $( l_id ).show();            },            function( ret ) {                $( l_id ).hide();                $('#ret').html( ret );            }        );    }}function do_other( extra ) {    //getpwd    var k_id = '#try';    var l_id = k_id + '_l';    var t_id = k_id + '_tip';    var data = '&do=check&val=&extra=' + extra;    ajax_post(        'index.php',        data,        function() {            $( l_id ).html( get_loadinghtml('c') );            $( l_id ).show();        },        function( ret ) {            $( l_id ).hide();            $('#ret').html( ret );        }    );}</script>
有趣的地方是do_other()下写了注释//getpwd,能用他得到密码?用chrome的调试功能,可以看到这个have try提交的按钮处,调用了程序员手写函数on_try()

这里写图片描述

那调用一下能得到密码的do_other()会怎样呢?把do_try(),改成do_other('getpwd'),提交后会弹出password

这里写图片描述

将URsoGreat提交,通关。可能有人不理解你为什么知道要改成do_other('getpwd'),尤其是里面的‘getpwd’,这需要你读do_other()的定义,然后找灵感。
1 0
原创粉丝点击