南京邮电大学CTF题目writeup (二) 含题目地址
Pass-01
題目地址:http://nctf.nuptzj.cn/web15/
看題目就是一個登錄失敗的提示"Invalid password!"
通過查看源代碼 可見如下圖:
#GOAL: login as admin,then get the flag; error_reporting(0); require 'db.inc.php';function clean($str){if(get_magic_quotes_gpc()){$str=stripslashes($str);}return htmlentities($str, ENT_QUOTES); }$username = @clean((string)$_GET['username']); $password = @clean((string)$_GET['password']);$query='SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';'; $result=mysql_query($query); if(!$result || mysql_num_rows($result) < 1){die('Invalid password!'); }echo $flag; -->調用了魔術方法,當 magic_quotes_gpc 打開時,所有的 ‘ (單引號), ” (雙引號), (反斜線) and 空字符會自動轉為含有反斜線的溢出字符,所以通過直接在username后面做下端句執行繞過 會有難度。
SQL執行語句 :SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';';
考慮能否讓 username輸入的內容 邊帶AND pass=后面的語句都在里面
$query='SELECT * FROM users WHERE name=\'\\' AND pass=\''$password'\';';這里AND前面那個點將不在執行去匹配后面$password前面那個點實現斷句成功,如果填寫$password的內容為#的話可以看下如下效果
SELECT * FROM users WHERE name='\' AND pass='or 1=1#';SQL執行
SELECT * FROM users WHERE name = ''' AND pass='OR 1 = 1添加or 1=1 使整個語句有回顯顯示
那么正確的Payload:?username=\&password=or 1=1#
Pass-02
題目地址:http://nctf.nuptzj.cn/web17/index.php
代碼審計弱等于繞過
if (isset($_GET['a']) and isset($_GET['b'])) { if ($_GET['a'] != $_GET['b']) if (md5($_GET['a']) == md5($_GET['b'])) die('Flag: '.$flag); else print 'Wrong.'; }數組也可以,用MD5值等于0e開頭的也可以,我這里的解題思路是用數組
?
Pass-03
題目地址:The Ducks
代碼審計
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { ?><?phpextract($_POST);if ($pass == $thepassword_123) { ?><div class="alert alert-success"><code><?php echo $theflag; ?></code></div><?php } ?><?php } ?>extract($_POST); 這里傳送的值已經是數組 我用數組沒有繞過去。這里的辦法是變量覆蓋,因為這里沒有去做取值,你傳多少內容這里他就收多少內容然后到下面去匹配。因為是POST所以用的方法是抓包改包。
?
Pass-04
題目地址:http://nctf.nuptzj.cn/web23/
<!--$file = $_GET['file']; if(@file_get_contents($file) == "meizijiu"){echo $nctf; }-->代碼很簡單 GET的方式來包含文件 但是這里檢測$file輸入的內容是 meizijiu的時候才會打印flag
所以這里用php://input的偽協議 來發送內容 meizijiu 達到繞過
?
Pass-05
題目地址:http://nctf.nuptzj.cn/web24/
<!--foreach($_GET as $key => $value){ $$key = $value; } if($name == "meizijiu233"){echo $flag; }-->?可見使用的foreach函數 如論傳多少個內容他都會一個個取出跟剛剛那題類似,也可以用變量覆蓋來做
?
剩余題目沒找到 要不就是沒有任何提示 如果有題目可以一起留言探討。小伙伴們!
總結
以上是生活随笔為你收集整理的南京邮电大学CTF题目writeup (二) 含题目地址的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图形化开放式生信分析系统开发 - 7 分
- 下一篇: Pr的防抖动和变形稳定器