CTF 【每日一題20160618】簡單xss示例
阿新 • • 發佈:2019-01-04
繼續黑客遊戲 第五關 複雜的文字遊戲
點一下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()的定義,然後找靈感。